
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」をクリックします。
「Link Account」をクリックします。
リンクできるGitホスティングサービスはGitHubとBitbucketがありますが、今回はGitHubを選択します。
「Select」をクリックします。
「Authorize docker」をクリックして、GitHubとDockerHubを連携します。
GitHubのパスワードを入力して、「Confirm password」をクリックします。
GitHubとDockerHubの連携が完了しました。
DockerHubでAutomated Buildを作成する
それでは、Automated Buildを作成していきましょう。
「Create -> Create Automated Build」をクリックします。
GitHubの「Create Auto-build」を選択します。
今回テスト用にGitHub上に用意した「temporary_test」リポジトリを選択します。
今回はデフォルトの設定で、「Create」をクリックします。この設定では、GitHub上のtemporary_testリポジトリのmasterブランチにPushするとDockerHub上でDockerイメージのビルドが自動的に行われます。
Automated Buildが作成されました。
「Build Details」にはまだビルドが無い状態です。
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イメージのビルドが実行されます。
「Status」が「Success」になればビルドが完了です。
自動ビルドされた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」を開いてみましょう。
Nginxが正しく起動していることがわかります。正しく動いていますね。
おまけ(Webhook)
今回は行いませんでしたが、DockerHubの「Webhooks」タブからWebhookを設定できます。
これを利用することで、Dockerイメージが自動ビルドされたタイミングで他のサービスに通知して連携できます。
最後に
いかがでしたか?これでGitHubにPushするだけでDockerHub上でDockerイメージを自動ビルドできるようになったと思います。とても便利ですね。では。
環境
- git: git version 2.19.0
- docker: Docker version 18.06.1-ce, build e68fc7a


コメントを残す