Github - TravisCI - DockerHub連携

 Webアプリをコンテナに入れて、それで運用できるようにしておくのが昨今のお気に入り。環境構築とか管理を手軽に済ませたいので。
 API keyなどのパブリックにしたらまずい情報は環境変数から読むようにしているので、コンテナを含めたもろもろのコードはGithubでパブリックにして管理している。結果物として出てくるDockerイメージは、これまでは手元でビルドしたものを自分でDockerHubへプッシュしていた。はい、自分でDockerHubにプッシュするのめんどい。


Github - DockerHub連携を使う
============================
Docker Hubを使ってGitHubにあるDockerfileからimageを自動生成する
 手っ取り早い。

CI環境でビルドしてDockerHubへプッシュ
=====================================
 たとえばTravisCI上でDockerイメージをビルドし、そいつをDockerHubへプッシュする。GithubとDockerHubの直接の連携より手間は増えるが、テストが可能になる。少し前、GoogleがDockerイメージに対するテスト自動化フレームワークとか公開してたし。

 TravisCIを使ったDockerHubへの自動プッシュの組み方を。TravisCIの前段にはGithubがあり、リポジトリの変更でTravisCIにコードが渡るように連携しておく。そしてTravisCIのSettingsの環境変数に、公開されないようにDockerHubのアカウントとパスワードを入れる。
 .travis.ymlを書く。以下のように書いたが、わりと最小構成に近いと思う。タグでTravisCIのビルド番号を使ってバージョンを変更しつつ、latestとしてもプッシュしている。テストは入れていない。
.travis.yml

services:
- docker

script:
- docker build -t matoba/cdcc:${TRAVIS_BUILD_NUMBER} .

after_success:
- docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
- docker push matoba/cdcc:${TRAVIS_BUILD_NUMBER}
- docker tag matoba/cdcc:${TRAVIS_BUILD_NUMBER} matoba/cdcc:latest
- docker push matoba/cdcc:latest


実行結果




 また開発の手間を一つ減らすことができた。
comment: 0