2020/07/19

GitHub へ push した際に Docker Hub で docker image を自動 build する

過去に「GitHub Actions で複数の Dockerfile の build と DockerHub への push を自動化した」という記事を書きました。
前回は 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 しか無いので放置中