前回は image の build を GitHub で行なっていましたが、今回は Docker Hub で build するように変更したお話です。
Docker Hub で docker image を build する
GitHub と連携した automated build という機能を利用しました(設定方法はドキュメント参照)。
前回同様、GitHub に push すると自動的に Docker Hub に image が更新されます。
これまた前回同様、以降は作業ログ等です。
何故構成を変更したのか
image を更新する為に Docker Hub を触っていた時、 GitHub 連携の存在に気付いた為です。
ちなみに、更新していた image は latex-make というもので、MacTeX をインストールせずに LaTeX を実行できる image です。
更新内容は TeX Live 2019 から TeX Live 2020 へのアップデートでした。
GitHub Actions 作成時に気にしていた3つの条件のゆくえ
過去の記事では以下の3つの条件を気にしていました。
- Dockerfile が増えた場合も自動で対応する
- Dockerfile や関連ファイルに更新が無い Image は Push しない
- GitHub Actions だけでなく、ローカルの環境でも build できる
第1条件と第2条件は、 Repository を分割して解決としました(latex-make, webpage-title)。
第3条件はビルドスクリプトをローカルマシンに残す事で解決としました。
構成を変更して良かった点
- 他の image の README を参考にした結果、 README が整備された
- latex-make には使用例が無かったので追記した
- shields.io を利用して image のサイズ等のバッジを追加
- GitHub/Docker Hub の README を(手動で)統一
- Docker Hub に automated build のログが残るようになった
- 前回は「push したユーザは atton, push 時刻」程度の情報しか無かった
- ログイン情報を書くが必要無い
- 連携時に Docker Hub から GitHub へ権限を要求しているので docker login を実行する必要は無い
- 具体的に言うと GitHub Actions ではログインパスワードを Secrets に書いていた
- なので、Docker Hub のログインパスワードを変更後、Secrets を更新しないと docker login に失敗する
構成を変更して良くなかった点
- 移行作業が手作業だった
- 対象となる docker image が2つのみだったので、手作業で移行を行なった
- 仮に docker image が多かった場合、移行スクリプト等を書く必要があったかもしれない
- 第2条件が若干緩くなった
- master が更新された際に build が行なわれるので、 README だけの変更 commit でも build が発生する
- git の tag をトリガーにして build する、等の設定で修正可能
- しかし現状の image の tag は latest しか無いので放置中