DockerHubとGitHubの連携(k8s用)
概要
k8sで自分のアプリケーション作ってみたときに
Dockerfile修正してgithubにpush、dockerのimageはdockerhubにpushって
都度都度コマンド打つの面倒臭いなって思ってたら
Docker HubにGithubとの連携なるボタンがあったからやってみる
やりたいこと(できたこと)
GitHubにタグをpushしたら DockerHubがそれをキャッチして新たなイメージをビルド そしてよろしくタグの名前ができる!!
Docker Hubでの設定
GitHubとの連携登録
①の「Builds」を押して、②の「Link to Link to GitHub」を押して オラーーーーってパスワードとか言われるがままに打ち込んで連携しちゃう
ビルドのルール作成
私の場合、1つのレポジトリにNGINXやgolang、MySQLのDockerfileが複数あるので
①で対象のレポジトリを選択。
Dockerfileに関する変更があった時のみビルド実行したいので
ブランチベースではなくタグを見つけたらビルドするように設定する
②のSource Type:Tag
後は以下の感じで設定してみる
- Build Context:レポジトリのルートから対象Dockerfileまでのディレクトリ
Source:
/^n-[0-9.]+$/
Docker Tag:
release-{sourceref}
- ヒットさせたタグの名称を使ってDocker imageのタグ作成
実験
実際に動くか実験してみると変更が反映されて
sample page => sample page2
になってる!!
$ # Dockerfileでコンテナに渡してるindex.htmlを適当に修正 $ git diff <body> - <p>sample page</p> + <p>sample page2</p> </body> $ $ # commit&tag&push $ git add . $ git commit -m "html少し修正" $ git push origin $ git tag -a 1.0.0 -m "初回タグ付け" $ git push origin 1.0.0 $ $ # Docke Hubブラウザでbuildsみるとキャッチできてた $ $ # 対象のタグを指定してデプロイ $ git diff --- a/nginx-deployment.yaml +++ b/nginx-deployment.yaml spec: containers: - - image: shintaro0123/nginx:1.0.4 + - image: shintaro0123/nginx:release-1.0.0 $ $ kubectl apply -f nginx-deployment.yaml $ curl http://`minikube ip` -H 'Host: nginx.ucwork.local' <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>sample page</title> </head> <body> <p>sample page2</p> </body> </html>
まとめ
なんか思ったより簡単にできた。
色々設定できるみたいだけどまぁとりあえず自動でビルドして欲しいだけだからこんなもんでいいやという気持ち