Casual Developers Note

エンジニアやデザイナー向けの技術情報・英語学習情報・海外留学情報・海外旅行情報を提供中。世界を旅して人生を楽しもう。

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • お問い合わせ
現在の場所:ホーム / アーカイブautomated-build

2018年10月29日 By KD コメントを書く

GitHubとDockerHubを連携してDockerイメージを自動ビルドする方法(Automated Build)

GitHubとDockerHubを連携してDockerイメージを自動ビルドする方法(Automated Build)

Dockerを使ったアプリケーションが商用でも使われている昨今において、Dockerイメージを簡単に自動ビルドしたいという需要は高いです。さまざまなCIツール上からでもできるのですが、今回はDockerHubが提供しているAutomated Buildで実現する方法を紹介します。

はじめに

DockerHubにはAutomated Buildという機能があります。この機能を利用することで、GitHub上のリポジトリにPushするだけで、Dockerイメージを自動的にビルドすることができます。

それでは、やっていきましょう。

DockerHubでAutomated Buildを設定する

前提

  • GitHubのアカウントが作成してある
  • GitHub上でテスト用のリポジトリが作成してある(今回は例として「temporary_test」という名前で進めます)
  • DockerHubのアカウントが作成してある

DockerHubとGitHubと連携する

まずはAutomated Buildを実行できるようにするために、DockerHubからGitHubを連携させます。

DockerHubにログインし、「Create -> Create Automated Build」をクリックします。

NewImage

「Link Account」をクリックします。

NewImage

リンクできるGitホスティングサービスはGitHubとBitbucketがありますが、今回はGitHubを選択します。

NewImage

「Select」をクリックします。

NewImage

「Authorize docker」をクリックして、GitHubとDockerHubを連携します。

NewImage

GitHubのパスワードを入力して、「Confirm password」をクリックします。

NewImage

GitHubとDockerHubの連携が完了しました。

NewImage

DockerHubでAutomated Buildを作成する

それでは、Automated Buildを作成していきましょう。

「Create -> Create Automated Build」をクリックします。

NewImage

GitHubの「Create Auto-build」を選択します。

NewImage

今回テスト用にGitHub上に用意した「temporary_test」リポジトリを選択します。

NewImage

今回はデフォルトの設定で、「Create」をクリックします。この設定では、GitHub上のtemporary_testリポジトリのmasterブランチにPushするとDockerHub上でDockerイメージのビルドが自動的に行われます。

NewImage

Automated Buildが作成されました。

NewImage

「Build Details」にはまだビルドが無い状態です。

NewImage

GitHubにDockerfileをPushする

それでは設定したAutomated Buildが動くことを確認しましょう。

GitHubでテスト用に用意したtemporary_testリポジトリをクローンして、Dockerfileを追加し、GitHubにPushします。{your-github-account}は自分のDockerHubアカウントを指定してください。

$ git clone https://github.com/{your-github-account}/temporary_test.git
$ cd temporary_test
$ touch Dockerfile
$ echo "FROM nginx" > Dockerfile
$ cat Dockerfile
FROM nginx
$ git add .
$ git commit -m 'Add Dockerfile'
$ git push origin master

すると、DockerHub上でGitHubのPushをトリガーに、自動的にDockerイメージのビルドが実行されます。

NewImage

「Status」が「Success」になればビルドが完了です。

NewImage

自動ビルドされたDockerイメージの動作確認

最後に、自動ビルドされたイメージが動くことを確認しましょう。

DockerHubのtemporary_testのイメージをPullして実行してみましょう。{your-dockerhub-account}は自分のDockerHubアカウントを指定してください。

$ docker pull {your-dockerhub-account}/temporary_test:latest
$ docker images
REPOSITORY                                                      TAG                  IMAGE ID            CREATED             SIZE
{your-dockerhub-account}/temporary_test                                          latest               cd568529388a        17 hours ago        109MB
$ docker run -itd --rm --name web -p 8080:80 {your-dockerhub-account}/temporary_test:latest
$ docker container ls
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                  NAMES
371256aef1dc        {your-dockerhub-account}/temporary_test:latest   "nginx -g 'daemon of…"   15 seconds ago      Up 15 seconds       0.0.0.0:8080->80/tcp   web

ブラウザで「localhost:8080」を開いてみましょう。

NewImage

Nginxが正しく起動していることがわかります。正しく動いていますね。

おまけ(Webhook)

今回は行いませんでしたが、DockerHubの「Webhooks」タブからWebhookを設定できます。

NewImage

これを利用することで、Dockerイメージが自動ビルドされたタイミングで他のサービスに通知して連携できます。

最後に

いかがでしたか?これでGitHubにPushするだけでDockerHub上でDockerイメージを自動ビルドできるようになったと思います。とても便利ですね。では。

環境

  • git: git version 2.19.0
  • docker: Docker version 18.06.1-ce, build e68fc7a

カテゴリ : 技術 Tips & Tutorials タグ : automated-build, docker, dockerhub

ブログ更新情報や海外の関連情報などを配信する無料メルマガ

Sponsored Links

About Author

KD

世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。挑戦に終わりはない。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。

https://casualdevelopers.com/

最近の投稿

  • 2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年1月13日
  • 今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    2019年11月4日
  • ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    2019年10月30日
  • BashからZshに移行する方法(Mac編)

    BashからZshに移行する方法(Mac編)

    2019年10月21日
  • Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    2019年9月30日

カテゴリ

  • 技術 Tips & Tutorials (100)
  • 技術塾 (6)
  • ライフハック (26)
  • 海外留学 (12)
  • 英語学習 (3)
  • コラム (6)

アーカイブ

最高の学習のために

人気記事ランキング

  • MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
    MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
  • SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
    SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
  • Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
    Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
  • Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
    Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
  • SLF4JとLogbackによるJavaのロギング入門(SLF4J + Logback + Lombok)
    SLF4JとLogbackによるJavaのロギング入門(SLF4J + Logback + Lombok)
  • Amazon EC2インスタンスにSSHできなくなった時の対処法
    Amazon EC2インスタンスにSSHできなくなった時の対処法
  • SpringBootのProfile毎にプロパティを使い分ける3つの方法
    SpringBootのProfile毎にプロパティを使い分ける3つの方法
  • [tips][perl] Perlで文字コードをいい感じに処理する方法
    [tips][perl] Perlで文字コードをいい感じに処理する方法
  • 爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
    爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
  • Go言語のためのVisual Studio Codeの設定方法
    Go言語のためのVisual Studio Codeの設定方法

Bitcoin寄付 / BTC Donation

Bitcoinを寄付しよう

BTC
Select Payment Method
Personal Info

Donation Total: BTC 0.0010

このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。

Bitcoin寄付について知りたい方はこちらの記事へ

ビットコイン取引ならここ

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • サイトマップ
  • タグ一覧
  • プライバシーポリシー
  • お問い合わせ

Copyright © 2023 KD - Casual Developers Notes