DockerHubでAutomated Buildを試す

DockerHubでAutomated Buildを試したメモです。

Dockerイメージは、DockerHubというリポジトリで自動でビルド、公開することが出来ます。
DockerHubはGitHubと連携することが出来ます。
そのため、GitHubでDockerfileをバージョン管理し、GitHubへDockerfileをコミットすると
DockerHubで自動でビルドしてDockerイメージを公開する、というような運用が出来ます。

GitHubでのDockerfile管理

GitHubへDockerfileをコミットします。
今回は「Dockerfiles」というリポジトリを作成し、「httpd_sample」というディレクトリを掘りました。
その下に、Dockerfileを配置します。
f:id:pppurple:20160718221314p:plain

ファイルの中身はこんなものです。
Dockerfile

# setting base image
FROM centos:centos6

# Author
MAINTAINER pppurple

# install Apache http server
RUN ["yum",  "-y", "install", "httpd"]

# start httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

DockerHub

DockerHubアカウント作成

DockerHubのサイトにアクセスします。

https://hub.docker.com/

アカウント名、メアド、パスワードを入力します。
f:id:pppurple:20160718235322p:plain

確認用メールが届くのでクリックすると、登録完了です。
f:id:pppurple:20160718235427p:plain

GitHub連携

DockerHubのトップページから、「Create」⇒「Create Automated Build」を選択します。
f:id:pppurple:20160718221038p:plain

「Link Accounts」をクリック。
f:id:pppurple:20160718221434p:plain

今回はGitHubと連携するので「Link GitHub」をクリック。
f:id:pppurple:20160718221716p:plain

「Public and Private」をクリック。
f:id:pppurple:20160718221841p:plain

GitHubの認証画面が表示されるので、「Authorize appication」をクリックして承認します。
f:id:pppurple:20160718221953p:plain

DockerHubの画面に戻るので、「Unlink GitHub」をクリック。
f:id:pppurple:20160718222546p:plain

「Create Auto-build」をクリック。
f:id:pppurple:20160718222647p:plain

GitHubリポジトリ一覧が表示されます。
連携対象のリポジトリを選択します。今回は「Dockerfile」リポジトリを選択します。
f:id:pppurple:20160718223007p:plain

「Create」をクリック。
f:id:pppurple:20160718223137p:plain

Automated buildの画面が表示されます。
f:id:pppurple:20160718223459p:plain

「Build Settings」タブをクリックする。
「Dockerfile Location」にGitHubリポジトリ内でのDockerfileのパスを指定します。
リポジトリ直下にDockerfileを配置している場合は、空でよいです。
「Trigger」ボタンをクリックすると、手動ビルドされます。
f:id:pppurple:20160718223556p:plain

ボタンが「Triggered」に変わります。
f:id:pppurple:20160718223933p:plain

「Build Details」タブをクリックします。
一番上に先ほどの手動ビルドの状態が表示されます。
ビルド中になっており、ビルド完了には数分かかります。
f:id:pppurple:20160718225622p:plain

数分経つと「Success」になり、ビルドが完了します。
エラーの場合は「Error」と表示され、クリックするとエラーの詳細が表示されます。
f:id:pppurple:20160718225716p:plain

「Dockerfile」タブをクリックすると、連携したDockerfileが表示されます。
f:id:pppurple:20160718225929p:plain

公開したDockerイメージを使う

DockerHubで公開したDockerイメージを使ってみます。

dockerからpullしてダウンロードします。
DockerHubに登録したアカウント名とリポジトリ名を指定します。

$ docker pull pppurple/dockerfiles
Using default tag: latest
latest: Pulling from pppurple/dockerfiles

9614861c9275: Pull complete
f2f3434f5712: Pull complete
Digest: sha256:5181f74f66803888a5da9f6143eb6f75010ef476e7d1afd3898eeb3e352bede2
Status: Downloaded newer image for pppurple/dockerfiles:latest

docker imagesでdockerイメージを確認してみます。
ダウンロードされていることが分かります。

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
pppurple/dockerfiles   latest              a2d783635b1d        3 hours ago         288.6 MB

Automated Buildを試す

GitHubで管理しているDockerfileを修正し、DockerHubのdockerイメージが
自動でビルドされることを確認してみます。

Authorを変更して、GitHubにコミットします。

# setting base image
FROM centos:centos6

# Author
MAINTAINER dummy

# install Apache http server
RUN ["yum",  "-y", "install", "httpd"]

# start httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

DockerHubの「Build Details」を確認してみると
GitHubへのコミットをトリガーにして自動でビルドが始まります。
f:id:pppurple:20160718234342p:plain

数分するとビルドが完了します。
f:id:pppurple:20160718234638p:plain

「Dockerfile」タブを確認してみると、Authorが変更されているのが分かります。
f:id:pppurple:20160718234730p:plain

終わり。


【参考】