LoginSignup
2
6

More than 5 years have passed since last update.

Docker Cloud Automated build from GitHub

Posted at

背景と目的

ローカル環境に色々なDockerfileが増えてきた。
ごちゃごちゃし始めたので、GitHubにアップしてスッキリしたい。
ついでに、前から気になっていたAutomated buildを試してみる。
公式ドキュメント

注意

Product and tool manuals
「Docker Hub - Superseded by Docker Store and Docker Cloud」
と記載されています。

https://hub.docker.com/ ではなく
https://cloud.docker.com/ から設定やリポジトリの作成を行って下さい。

手順概要

  1. GitHubにリポジトリを作成
  2. Docker Cloudの設定からGitHubを連携
  3. Docker Cloudにリポジトリを作成
  4. GitHubにDockerfileを保存
  5. Docker Cloudでビルドの状況を確認

GitHubにリポジトリを作成

Build your own imageを参考にDockerfileを作るので、リポジトリ名は whalesay にしました。
READMEは、Automated buildが完了後、Docker Cloudにも同じ内容が表示されます。
Create_a_New_Repository.png

リポジトリの Settings / Integrations & services / Add service から Docker を選択します。
Integrations_and_services.png

Add serviceをクリックします。
Add_service.png

Docker Cloudの設定からGitHubを連携

Docker Cloudの設定からGitHubへ接続します。
Docker_Cloud.png

GitHubへ転送されるので許可します。
Authorize_Docker_Cloud_Builder.png

Docker Cloudにリポジトリを作成

Docker側のリポジトリ名は、GitHubと一致させる必要はないが、今回は whalesay にしました。
Build SettingsでGitHubをクリックして、GitHub側のリポジトリを選択します。
Docker_Cloud.png

連携がうまくいくと Recent builds にGitHubの情報が表示されます。
ただし、この段階では、ビルドは行われません。
この後、GitHubに更新が発生するとビルドが行われます。ビルド完了後にGitHubのREADMEも表示されます。
Docker_Cloud.png

GitHubにDockerfileを保存

GitHubのリポジトリをcloneします。

$ git clone git@github.com:maedamikio/whalesay.git
$ cd whalesay

Dockerfileを作成します。

$ vim Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Dockerfileを保存します。

$ git add Dockerfile
$ git commit -m "create Dockerfile"
$ git push

Docker Cloudでビルドの状況を確認

Docker CloudのリポジトリでBuildsを確認します。
Build Statusは EMPTY です。キューに登録されているが、ビルドは始まっていない状態です。
Docker_Cloud.png

2〜3分経ったでしょうか?Build Statusが BUILDING になりました。
Docker_Cloud.png

Timelineから詳細を確認できます。
Docker_Cloud.png

ビルドが完了しました。約15分かかりました。
ちなみに、ローカル環境(i7 3GHz)では、3分弱でした。apt-get updateが2分強でした。
棒グラフをクリックすると詳細が表示されます。
Docker_Cloud.png
Docker_Cloud.png

ビルド環境を変更することもできます。
Docker_Cloud.png

BUILD RULESでBuild Cachingが有効になっているので、Dockerfileに変更がほとんどなければビルド時間は短縮されます。
BUILD LOCATIONは「Small 1 CPU, 1GB RAM」です。課金無しでも「Large(even faster) 1CPU, 3.75GB RAM」に変更できます。
ただ、人気があるのか、ビルド時間は、あまり短縮されません。むしろ、キャッシュ有りでSmallの倍の時間がかかってます。

下記のグラフは、キュー待ち時間(Queue)とビルド時間(Success)です。Dockerfileは変更していません。Trigger Buildを使ってビルドを再実行しました。左から

  • 初回のビルド。Small。
  • 2回目のビルド。Small。キャッシュの効果でビルド時間は大幅に短縮。
  • 3回目のビルド。Small。キュー待ち時間が発生。この辺りは、運次第っぽい。
  • 4回目のビルド。Largeへ変更。キュー待ちは発生しないが、ビルド時間はSmallの2倍超。 Docker_Cloud.png

まとめ

  • 手順自体は、非常に簡単でした。DockerfileをGitHubにアップしてスッキリしたいと思います。
  • Docker Cloudの無料プライベートリポジトリは、1つなので、複数のプライベートリポジトリを利用する場合は、課金が必要です。
  • ビルドは、Build on my own nodesが選べるので、高性能環境があればビルド時間を短縮出来るのだと思う。ただ、そこまでするならローカル環境でも良い気がする。
  • Automated repository testsRedeploy services automaticallyも出来るのでやってみたいです。
2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6