Azure Container Registry (ACR) がもつ機能 ACR タスク
を使うことで、ベースイメージやソースコードの更新をトリガーに自動でコンテナイメージをビルドすることができます。
ACR タスクの概要 : https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-tasks-overview
1. ACR タスクを作成する
ACR と Dockerfile を含む Git リポジトリをあらかじめ用意しておきます。
azure cloud shell や az login したコンソールで、以下のコマンドを実行します。
ACR_NAME=<作成した ACR 名>
ACR_TASK_NAME=<任意の ACR タスク名>
az acr task create \
--registry ${ACR_NAME} \
--name ${ACR_TASK_NAME} \
--image <任意のコンテナイメージ名>:<タグ> \
--context <Git リポジトリの clone URL>\
--file <Dockerfile 名> \
--git-access-token <Git Access token (PAT)>
公式チュートリアルのコマンド実行例 : https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-tutorial-base-image-update#create-a-task
作成した ACR タスクは ACR の [サービス] - [タスク] から確認できます。
2. ACR タスクを手動で実行する
自動ビルドを有効にするためには、一度、ACR タスクを手動実行する必要があります。
https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-tasks-base-images#additional-considerations
以下のコマンドで実行します。
az acr task run --registry ${ACR_NAME} --name ${ACR_TASK_NAME}
また、ACR リポジトリにビルドしたイメージが格納されます。
3. ベースイメージ/ソースコードの更新による自動ビルドを確認する
今回は、Docker Hub 上のベースイメージを更新します。
ベースイメージの場所によって更新からビルドがトリガーされるまでの時間が異なり、Docker Hub の場合は 10 ~ 60 分かかります。
https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-tasks-base-images#base-image-notifications
10 分程度待ってタスク画面を見てみると、トリガーがイメージ更新
となっている ACR タスクの実行が確認できました。
また、Git リポジトリ内のソースコードに更新をかけると、こちらも自動ビルドが走りました。
自動ビルドを off にしたい場合は、az acr task update
コマンドのオプションでそれぞれ変更できます。
https://docs.microsoft.com/ja-jp/cli/azure/acr/task?view=azure-cli-latest#az_acr_task_update
az acr task update --name ${ACR_TASK_NAME} --registry ${ACR_NAME} --base-image-trigger-enabled false
az acr task update --name ${ACR_TASK_NAME} --registry ${ACR_NAME} --commit-trigger-enabled false