Automatically build Docker images

Docker Hubには自動ビルド機能があって、GitHubに対して行われたアクション(ブランチの作成、マスターへのマージ)を契機にDocker Hub側でイメージの自動ビルドを走らせることが出来ます。

以下のようなメリットがあります。

  • Docker HubにDockerfileを設置することができる
  • GitHubリポジトリのdescriptionやREADMEを読み込んで自動的にShort DescriptionとFull Descriptionを埋めてくれる
  • イメージに対し自動でタグ付けしてくれる
  • 手元でビルドを実行しpushする手間が省ける

Dockerfileはこんな感じで表示されます。


今回は以下のような前提のもと、設定を行いました。

  • 既にGitHubリポジトリが存在している

大まかな流れは以下です。

  • GitHubとDocker Hubを接続する
  • Automated Buildの設定をする
  • 1回目のビルドを手動で行う

自動ビルド設定の手順

GitHubとDocker Hubを接続する

以下のようにsettingsから設定します。

Automated Buildの設定をする

以下のように設定していきます。Docker Hubリポジトリの作成と同時に行うので、既にDocker Hubリポジトリを作ってしまった場合は削除する必要があります(同じ名前にしたければ)。

既存のDocker HubリポジトリにAutomated Buildの設定をするのは無理っぽいです(たぶん)。

設定が終わるとビルド周りの設定ができるようになって、作成されたDocker Hubリポジトリにautomated buildマークが付きます。

1回目のビルドを手動で行う

今回の場合、既に完成したGitHubリポジトリがある状態から始めたので、1回目のビルドは手動で行う必要があります(適当なコミットをしてビルドを走らせるのも何なので…)。

簡単なのはBuild SettingsページにあるTriggerボタンを押す方法です(コメント欄参照。感謝!!!)。

あとはビルドエンドポイントを使う方法もあります。

Build Settingの下の方にビルドトリガーを設定する箇所があるので、ビルドのエンドポイントを有効にしてShow Exampleを開いて出てくるcurlコマンドを実行すると、ビルドを走らせることが出来ます。

ビルドが走ったらエンドポイントは無効にしておく。

トリガーを使ってビルドが実行されると、ログに記録されます。

ビルドされるタイミングについて

GitHubにブランチをプッシュしたタイミングとマスターにマージしたタイミングでビルドが走りました。

このとき、以下のようにタグ付けされます。

  • ブランチをプッシュしたタイミングでビルドされるイメージのタグにはブランチ名が使われる
  • マスターにマージされたタイミングでビルドされるイメージにはlatestタグが付く

感想

ポチポチするだけで設定できた。楽ちん!Docekrfileを表示しているDocker Hubリポジトリがどうやっているのか謎だったんですが、これですっきりしました。

Dockerfileが表示されることでイメージの信頼性も担保できて良い感じですね!

さらにイメージのビルド時にセキュリティチェックをしてくれる機能もあるっぽい(有料かな…)。