
目次
はじめに
Gitコマンド・Dockerのインストール(Windows)
Docker HubとGitHubの連携
DockerHub上で新規リポジトリ作成
GitHubにプッシュ、自動ビルドの実行確認
さいごに
はじめに
DockerHubとの連携により、GithubやBitbucketといったソースコードのホスティングサービス上のリポジトリに変更がpushされたタイミングで、自動的にビルドを実行する仕組みがあります。
今回はその一例として、DockerHubとGitHubを連携させることで自動ビルドが実行できる「Automated build」という仕組みについて記載しようと思います。
仕組みとしては、GitHub上の連携設定をしたリポジトリに変更があった都度、 DockerHub側が変更された内容を反映した状態でイメージのビルドを自動で実行する機能になります。自動ビルドされたイメージ(Dockerfile)は、連携設定をしたDockerHubレジストリにプッシュされます。
自動的にビルドが実行されることで、手動でのビルド作業( ローカルでのdocker build・docker push等 )の必要がなく、効率的に作成したアプリケーションの更新を行うことが可能になります。
※Dockerfile、Dockerイメージなどの詳細につきましては本記事では割愛させて頂くため、公式ドキュメントのURLを下記に掲載させて頂きます。
公式ドキュメント:
https://docs.docker.jp/index.html
・Dockerfileについて:
https://docs.docker.jp/engine/reference/builder.html
・Dockerイメージについて:
https://docs.docker.jp/engine/userguide/dockerimages.html
1.Gitコマンド・Dockerのインストール(Windows)
今回はWindows版について記載します。(macなど他のOSについても流れは同じになります)
※Windows用のDockerについて、Windows HomeエディションではHyper-Vの機能が使えないため、
以前はHomeエディションでDockerの実行が難しかったものの、最新のDockerのバージョンでは
WSL2というLinuxカーネルを追加インストールすることで使用可能になっています。
① コマンドラインからGitを実行するため 、下記のサイトからGit for Windowsをインストールします。
https://git-scm.com/

② 続けて下記のサイトより、Windows版のDockerをインストールします。
https://docs.docker.com/docker-for-windows/install/

③ Dockerをインストール後、下記の2つの手順を実行します。
1. WSL2 Linuxカーネルのアップデート
下図のダイアログが表示されるので、下記リンク(https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-4—download-the-linux-kernel-update-package)から
「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」 をインストールします。

2.BIOSから仮想化機能を有効化
マザーボードのメーカーによって設定方法が異なるため、「BIOS」「仮想化」「メーカー名」等で検索し、公式サイトの記載手順を参考に仮想化機能の設定を有効化します。
※(例)ASUSの場合…https://www.asus.com/jp/support/FAQ/1038245/
2.Docker HubとGitHubの連携
① Docker Hubのサイトにアクセスし、新規にアカウントを作成します。
https://hub.docker.com/

② アカウント作成後、 Docker Hub のトップページに行き、ページ右側のタブから「Account Settings」をク
リックします。

③ Docker HubとGitHubを連携させるため、画面左側のタブ「Linked Accounts」を選択し、右下のGitHubの
欄にあるConnectをクリックします。

④ GItHubアカウントのログイン画面が表示されるので、アカウント情報を入力します。
これでDocker HubとGitHubの連携設定が完了しました。

3.DockerHub上で新規リポジトリ作成
① Docker Hubのトップ画面に戻り、下の「Create a Repository」からDockerHub上にリポジトリを新規作成
します。

② 下記の項目をそれぞれ入力・選択し、一番下の「Create」ボタンをクリックします。
1.DockerHubアカウント名、リポジトリ
先ほど作成したアカウントとリポジトリを選択します。
2.Visibility
「Public」を選択すると他のユーザーがソースコードを閲覧可能な状態になります。
※ 非公開にしたい場合は「Private」を選択してください。
3.Build Settings
GitHubのアイコンを選択するとアカウントを選択する欄が出てくるので、自分のGitHubのアカウント
と、Github上で作成したリポジトリを選択します。
※ここではサンプル用の空のリポジトリを選択しています。GitHub上で新規リポジトリを作成する方法に
つきましては、下記の過去記事をご参照頂けますと幸いです。
4.BUILD RULES
デフォルト設定では、選択したリポジトリのMasterブランチに自動ビルドが設定されますが、別のブランチを
指定したい場合などはこの項目から変更ができます。

4.GitHubにプッシュ、自動ビルドの実行確認
① 自動ビルドの実行を確認するために、Githubのリポジトリに Dockerfile を新たに作成してみます。
もし、ローカルに3で連携設定をしたGitHubリポジトリのクローンがない場合は、下記のコードをコマンドラインから実行します。(GitHub上に存在するリポジトリのクローンをローカルに新規作成します。)
※ 対象リポジトリのURLはGitHubのトップページからコピー可能です。
git clone https://github.com/アカウント名/リポジトリ名
② 任意のテキストエディタに下記2行を貼り付け、ローカルのgitリポジトリが存在するディレクトリに
Dockerfileを作成、拡張子なしで保存します。
今回はGitHubへのPush( Dockerfile の新規追加)をトリガーに、DockerHubの自動ビルドが実行されるかの確認を行うため、Docker Hub上に公開されている「dockersamples/static-site」というサンプルイメージを使用します。下記の内容は、サンプルイメージをベースにし、環境変数のAUTHORに”Author name”という値を入れてWEBページ上に表示させる、という内容になります。
(https://hub.docker.com/r/dockersamples/static-site)
FROM dockersamples/static-site ENV AUTHOR="Author name"

③下記のコマンドをそれぞれ実行します。
git config --global user.name "GitHubアカウント名" git config --global user.email "GitHubアカウントのメールアドレス" git add Dockerfile git commit -m "Add Dockerfile" git push origin
上のコマンドを実行したことにより、GitHub上に「 Dockerfile 」が追加されたことが確認できます。

④ DockerHubのトップページから作成したリポジトリのページを開き、「Builds」タブを開きます。
下図の通り、ビルドに実行するとSUCCESSと表示されます。
ビルドの状態が画面中央の「Build Activity」に表示されていますが、DockerfilleがGitHubのリポジトリに存在していない場合、自動ビルドが実行されても処理がエラーになります。(イメージが作成できないため)
③の手順でDockerfileをGitHubにプッシュしたことにより、最後のビルドが成功しています。

⑤ 最後に、コンソールから下記のコマンドを実行することでDockerコンテナが起動します。ローカルの8080番ポートを使用しているので、http://localhost:8080/にアクセスしてみると、Dockerfileに記述したサンプルイメージと環境変数の値(Author name)が表示されています。これで、GitHubのリポジトリ更新をトリガーに、Docker上で自動ビルドの実行がされたことを確認できました。
docker run -itd -p 8080:80 DockerHubアカウント名/test-repository

さいごに
初めてDocker Hubを触ってみましたが、公式のドキュメントもわかりやすく、比較的に簡単に設定ができました。次回以降の記事では、Dockerの動作や仕組みについて掲載できたらと思います。