Cara mengkonsumsi dan memelihara konten publik dengan Azure Container Registry Tasks
Artikel ini menyajikan contoh alur kerja di Azure Container Registry untuk membantu Anda mengelola mengkonsumsi dan memelihara konten publik:
- Impor salinan lokal gambar publik dependen.
- Validasi gambar publik melalui pemindaian keamanan dan pengujian fungsional.
- Promosikan gambar ke registri privat untuk penggunaan internal.
- Picu pembaruan gambar dasar untuk aplikasi tergantung pada konten publik.
- Gunakan Azure Container Registry Tasks untuk mengotomatiskan alur kerja ini.
Alur kerja diringkas dalam gambar berikut:
Alur kerja impor yang terjaga membantu mengelola dependensi organisasi Anda pada artefak yang dikelola secara eksternal - misalnya, gambar yang bersumber dari registri publik termasuk Docker Hub, GCR, Quay, GitHub Container Registry, Microsoft Container Registry, atau bahkan registri kontainer Azure lainnya.
Untuk latar belakang tentang risiko yang disebabkan oleh dependensi pada konten publik dan cara menggunakan Azure Container Registry untuk menguranginya, lihat Memposting Blog Konten Publik Yang Menggunakan OCI dan Mengelola konten publik dengan Azure Container Registry.
Anda dapat menggunakan Azure Cloud Shell atau pemasangan lokal Azure CLI untuk menyelesaikan mulai cepat ini. Azure CLI versi 2.10 atau yang lebih baru direkomendasikan. Jika Anda perlu memasang atau memutakhirkan, lihat Memasang Azure CLI.
Ringkasan skenario
Penelusuran ini mengatur:
- Tiga registri kontainer, mewakili:
- Docker Hub yang disimulasikan (
publicregistry
) untuk mendukung perubahan gambar dasar - Registri tim (
contoso
) untuk berbagi gambar pribadi - Registri bersama perusahaan/tim (
baseartifacts
) untuk konten publik yang diimpor
- Docker Hub yang disimulasikan (
- Tugas ACR di setiap registri. Tugas-tugas:
- Menyusun gambar publik
node
yang disimulasikan - Mengimpor dan memvalidasi gambar
node
ke registri bersama perusahaan/tim - Menyusun dan menyebarkan gambar
hello-world
- Menyusun gambar publik
- Definisi tugas ACR, termasuk konfigurasi untuk:
- Kumpulan kredensial registri, yang merupakan penunjuk ke vault kunci
- Kumpulan rahasia, tersedia dalam sebuah
acr-task.yaml
, yang merupakan penunjuk ke vault kunci - Kumpulan nilai yang dikonfigurasi yang digunakan dalam
acr-task.yaml
- Azure key vault untuk mengamankan semua rahasia
- Instans kontainer Azure, yang meng-hosting aplikasi build
hello-world
Prasyarat
Langkah-langkah berikut mengkonfigurasi nilai untuk sumber daya yang dibuat dan digunakan di panduan.
Mengatur variabel lingkungan
Mengkonfigurasi variabel yang unik untuk lingkungan Anda. Kami mengikuti praktik terbaik untuk menempatkan sumber daya dengan konten yang tahan lama di grup sumber daya mereka sendiri untuk meminimalkan penghapusan yang tidak disengaja. Namun, Anda dapat menempatkannya dalam satu grup sumber daya jika diinginkan.
Contoh dalam artikel ini diformat untuk shell bash.
# Set the three registry names, must be globally unique:
REGISTRY_PUBLIC=publicregistry
REGISTRY_BASE_ARTIFACTS=contosobaseartifacts
REGISTRY=contoso
# set the location all resources will be created in:
RESOURCE_GROUP_LOCATION=eastus
# default resource groups
REGISTRY_PUBLIC_RG=${REGISTRY_PUBLIC}-rg
REGISTRY_BASE_ARTIFACTS_RG=${REGISTRY_BASE_ARTIFACTS}-rg
REGISTRY_RG=${REGISTRY}-rg
# fully qualified registry urls
REGISTRY_DOCKERHUB_URL=docker.io
REGISTRY_PUBLIC_URL=${REGISTRY_PUBLIC}.azurecr.io
REGISTRY_BASE_ARTIFACTS_URL=${REGISTRY_BASE_ARTIFACTS}.azurecr.io
REGISTRY_URL=${REGISTRY}.azurecr.io
# Azure key vault for storing secrets, name must be globally unique
AKV=acr-task-credentials
AKV_RG=${AKV}-rg
# ACI for hosting the deployed application
ACI=hello-world-aci
ACI_RG=${ACI}-rg
Repositori dan token Git
Untuk mensimulasikan lingkungan Anda, fork masing-masing git repositori berikut ke dalam repositori yang dapat Anda kelola.
- https://github.com/importing-public-content/base-image-node.git
- https://github.com/importing-public-content/import-baseimage-node.git
- https://github.com/importing-public-content/hello-world.git
Kemudian, perbarui variabel berikut untuk repositori fork Anda.
:main
Ditambahkan ke akhir URL git mewakili cabang repositori default.
GIT_BASE_IMAGE_NODE=https://github.com/<your-fork>/base-image-node.git#main
GIT_NODE_IMPORT=https://github.com/<your-fork>/import-baseimage-node.git#main
GIT_HELLO_WORLD=https://github.com/<your-fork>/hello-world.git#main
Anda memerlukan token akses GitHub (PAT) untuk Tugas ACR untuk mengkloning dan membuat webhook Git. Untuk langkah-langkah membuat token dengan izin yang diperlukan ke repositori pribadi, lihat Membuat token akses GitHub.
GIT_TOKEN=<set-git-token-here>
Kredensial Docker Hub
Untuk menghindari permintaan pembatasan dan identitas saat menarik gambar dari Docker Hub, buat token Docker Hub. Kemudian, atur variabel lingkungan berikut:
REGISTRY_DOCKERHUB_USER=<yourusername>
REGISTRY_DOCKERHUB_PASSWORD=<yourtoken>
Membuat registri
Menggunakan perintah Azure CLI, buat tiga registri kontainer tingkat Premium, masing-masing dalam grup sumber dayanya sendiri:
az group create --name $REGISTRY_PUBLIC_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_PUBLIC_RG --name $REGISTRY_PUBLIC --sku Premium
az group create --name $REGISTRY_BASE_ARTIFACTS_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_BASE_ARTIFACTS_RG --name $REGISTRY_BASE_ARTIFACTS --sku Premium
az group create --name $REGISTRY_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_RG --name $REGISTRY --sku Premium
Membuat key vault dan mengatur rahasia
Membuat Key Vault:
az group create --name $AKV_RG --location $RESOURCE_GROUP_LOCATION
az keyvault create --resource-group $AKV_RG --name $AKV
Atur nama pengguna dan token Docker Hub di key vault:
az keyvault secret set \
--vault-name $AKV \
--name registry-dockerhub-user \
--value $REGISTRY_DOCKERHUB_USER
az keyvault secret set \
--vault-name $AKV \
--name registry-dockerhub-password \
--value $REGISTRY_DOCKERHUB_PASSWORD
Atur dan verifikasi Git PAT di key vault:
az keyvault secret set --vault-name $AKV --name github-token --value $GIT_TOKEN
az keyvault secret show --vault-name $AKV --name github-token --query value -o tsv
Membuat grup sumber daya untuk instans kontainer Azure
Grup sumber daya ini digunakan dalam tugas selanjutnya saat menyebarkan gambar hello-world
.
az group create --name $ACI_RG --location $RESOURCE_GROUP_LOCATION
Membuat gambar dasar node
publik
Untuk mensimulasikan gambar node
di Docker Hub, buat tugas ACR untuk membangun dan memelihara gambar publik. Penyetelan ini memungkinkan simulasi perubahan oleh penyiap gambar node
.
az acr task create \
--name node-public \
-r $REGISTRY_PUBLIC \
-f acr-task.yaml \
--context $GIT_BASE_IMAGE_NODE \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_DOCKERHUB_URL}/ \
--assign-identity
Untuk menghindari pembatasan Docker, tambahkan kredensial Docker Hub ke tugas. Perintah kredensial tugas acr dapat digunakan untuk meneruskan kredensial Docker ke registri apa pun, termasuk Docker Hub.
az acr task credential add \
-n node-public \
-r $REGISTRY_PUBLIC \
--login-server $REGISTRY_DOCKERHUB_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-dockerhub-user \
-p https://${AKV}.vault.azure.net/secrets/registry-dockerhub-password \
--use-identity [system]
Berikan akses tugas ke nilai baca dari key vault:
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name node-public \
--registry $REGISTRY_PUBLIC \
--query identity.principalId --output tsv) \
--secret-permissions get
Tugas dapat dipicu oleh komit Git, pembaruan gambar dasar, timer, atau menjalankan manual.
Jalankan tugas secara manual untuk menghasilkan gambar node
:
az acr task run -r $REGISTRY_PUBLIC -n node-public
Mencantumkan gambar dalam registri publik yang disimulasikan:
az acr repository show-tags -n $REGISTRY_PUBLIC --repository node
Membuat gambar hello-world
Berdasarkan simulasi gambar node
publik, bangun gambar hello-world
.
Buat token untuk akses tarik ke registri publik yang disimulasikan
Buat token akses ke registri publik yang disimulasikan, tercakup ke pull
. Kemudian, atur ke dalam key vault:
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_PUBLIC}-user" \
--value "registry-${REGISTRY_PUBLIC}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_PUBLIC}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY_PUBLIC}-user" \
--registry $REGISTRY_PUBLIC \
--scope-map _repositories_pull \
-o tsv \
--query credentials.passwords[0].value)
Membuat token untuk akses tarik oleh Azure Container Instances
Membuat token akses ke registri yang meng-hosting gambar hello-world
, tercakup untuk penarikan. Kemudian, atur ke dalam key vault:
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY}-user" \
--value "registry-${REGISTRY}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY}-user" \
--registry $REGISTRY \
--repository hello-world content/read \
-o tsv \
--query credentials.passwords[0].value)
Membuat tugas untuk menyusun dan memelihara gambar hello-world
Perintah berikut membuat tugas dari definisi di acr-tasks.yaml
di repositori hello-world
. Langkah-langkah tugas menyusun gambar hello-world
lalu menerapkannya ke Azure Container Instances. Grup sumber daya untuk Azure Container Instances dibuat di bagian sebelumnya. Dengan memanggil az container create
di tugas hanya dengan perbedaan dalam image:tag
, tugas diterapkan ke contoh yang sama di seluruh panduan ini.
az acr task create \
-n hello-world \
-r $REGISTRY \
-f acr-task.yaml \
--context $GIT_HELLO_WORLD \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_PUBLIC_URL}/ \
--set KEYVAULT=$AKV \
--set ACI=$ACI \
--set ACI_RG=$ACI_RG \
--assign-identity
Menambahkan kredensial ke tugas untuk registri publik yang disimulasikan:
az acr task credential add \
-n hello-world \
-r $REGISTRY \
--login-server $REGISTRY_PUBLIC_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-password \
--use-identity [system]
Berikan akses tugas ke nilai baca dari key vault:
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name hello-world \
--registry $REGISTRY \
--query identity.principalId --output tsv) \
--secret-permissions get
Berikan akses tugas untuk membuat dan mengelola Azure Container Instances dengan memberikan akses ke grup sumber daya:
az role assignment create \
--assignee $(az acr task show \
--name hello-world \
--registry $REGISTRY \
--query identity.principalId --output tsv) \
--scope $(az group show -n $ACI_RG --query id -o tsv) \
--role owner
Dengan tugas yang dibuat dan dikonfigurasi, jalankan tugas untuk menyusun dan menyebarkan gambar hello-world
:
az acr task run -r $REGISTRY -n hello-world
Setelah dibuat, dapatkan alamat IP kontainer yang meng-hosting gambar hello-world
.
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Di browser Anda, buka alamat IP untuk melihat aplikasi yang sedang berjalan.
Memperbarui gambar dasar dengan perubahan yang "dipertanyakan"
Bagian ini mensimulasikan perubahan pada gambar dasar yang dapat menyebabkan masalah di lingkungan.
- Buka
Dockerfile
di repositori forkbase-image-node
. - Ubah
BACKGROUND_COLOR
keOrange
untuk mensimulasikan perubahan.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Orange
Lakukan perubahan dan perhatikan Tugas ACR untuk mulai membangun secara otomatis.
Perhatikan tugas untuk mulai mengeksekusi:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Anda akhirnya akan melihat STATUS Succeeded
berdasarkan PEMICU Commit
:
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------- ---------- --------- --------- -------------------- ----------
ca4 hub-node linux Succeeded Commit 2020-10-24T05:02:29Z 00:00:22
Ketik Ctrl+C untuk keluar dari perintah menonton, lalu tampilkan log untuk proses eksekusi terbaru:
az acr task logs -r $REGISTRY_PUBLIC
Setelah gambar node
selesai, watch
agar Tugas ACR secara otomatis mulai membangun gambar hello-world
:
watch -n1 az acr task list-runs -r $REGISTRY -o table
Anda akhirnya akan melihat STATUS Succeeded
berdasarkan PEMICU Image Update
:
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- ----------- ---------- --------- ------------ -------------------- ----------
dau hello-world linux Succeeded Image Update 2020-10-24T05:08:45Z 00:00:31
Ketik Ctrl+C untuk keluar dari perintah menonton, lalu tampilkan log untuk proses eksekusi terbaru:
az acr task logs -r $REGISTRY
Setelah selesai, dapatkan alamat IP situs yang meng-hosting gambar hello-world
yang diperbarui:
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Di browser Anda, buka situs, yang seharusnya memiliki latar belakang oranye (dipertanyakan).
Memeriksa
Pada titik ini, Anda telah membuat gambar hello-world
yang secara otomatis dibangun di git commits dan perubahan pada gambar node
dasar. Dalam contoh ini, tugas dibangun terhadap gambar dasar di Azure Container Registry, tetapi registri yang didukung dapat digunakan.
Pembaruan gambar dasar secara otomatis mencoba kembali tugas yang dijalankan saat gambar node
diperbarui. Seperti yang terlihat di sini, tidak semua pembaruan diinginkan.
Impor terjaga dari konten publik
Untuk mencegah perubahan upstream melanggar beban kerja penting, pemindaian keamanan dan pengujian fungsional dapat ditambahkan.
Di bagian ini, Anda membuat tugas ACR untuk:
- Membuat gambar uji
- Menjalankan skrip uji fungsional
./test.sh
terhadap gambar uji - Jika gambar berhasil menguji, impor gambar publik ke registri baseimages
Menambahkan pengujian otomatisasi
Untuk menjaga konten upstream apa pun, pengujian otomatis diterapkan. Dalam contoh ini, test.sh
disediakan untuk memeriksa $BACKGROUND_COLOR
. Jika pengujian gagal, EXIT_CODE
dari 1
ditampilkan yang menyebabkan langkah tugas ACR gagal, mengakhiri jalannya tugas. Pengujian dapat diperluas pada bentuk alat apa pun, termasuk hasil pencatatan. Gerbang dikelola oleh respons lulus/gagal dalam skrip, direproduksi di sini:
if [ ""$(echo $BACKGROUND_COLOR | tr '[:lower:]' '[:upper:]') = 'RED' ]; then
echo -e "\e[31mERROR: Invalid Color:\e[0m" ${BACKGROUND_COLOR}
EXIT_CODE=1
else
echo -e "\e[32mValidation Complete - No Known Errors\e[0m"
fi
exit ${EXIT_CODE}
YAML Tugas
Meninjau acr-task.yaml
dalam repositori import-baseimage-node
, yang melakukan langkah-langkah berikut:
- Membuat gambar basis pengujian menggunakan Dockerfile berikut:
ARG REGISTRY_FROM_URL= FROM ${REGISTRY_FROM_URL}node:15-alpine WORKDIR /test COPY ./test.sh . CMD ./test.sh
- Ketika selesai, validasi gambar dengan menjalankan kontainer, yang menjalankan
./test.sh
- Hanya jika berhasil diselesaikan, jalankan langkah-langkah impor, yang dibatasi dengan
when: ['validate-base-image']
version: v1.1.0
steps:
- id: build-test-base-image
# Build off the base image we'll track
# Add a test script to do unit test validations
# Note: the test validation image isn't saved to the registry
# but the task logs captures log validation results
build: >
--build-arg REGISTRY_FROM_URL={{.Values.REGISTRY_FROM_URL}}
-f ./Dockerfile
-t {{.Run.Registry}}/node-import:test
.
- id: validate-base-image
# only continues if node-import:test returns a non-zero code
when: ['build-test-base-image']
cmd: "{{.Run.Registry}}/node-import:test"
- id: pull-base-image
# import the public image to base-artifacts
# Override the stable tag,
# and create a unique tag to enable rollback
# to a previously working image
when: ['validate-base-image']
cmd: >
docker pull {{.Values.REGISTRY_FROM_URL}}node:15-alpine
- id: retag-base-image
when: ['pull-base-image']
cmd: docker tag {{.Values.REGISTRY_FROM_URL}}node:15-alpine {{.Run.Registry}}/node:15-alpine
- id: retag-base-image-unique-tag
when: ['pull-base-image']
cmd: docker tag {{.Values.REGISTRY_FROM_URL}}node:15-alpine {{.Run.Registry}}/node:15-alpine-{{.Run.ID}}
- id: push-base-image
when: ['retag-base-image', 'retag-base-image-unique-tag']
push:
- "{{.Run.Registry}}/node:15-alpine"
- "{{.Run.Registry}}/node:15-alpine-{{.Run.ID}}"
Membuat tugas untuk mengimpor dan menguji gambar dasar
az acr task create \
--name base-import-node \
-f acr-task.yaml \
-r $REGISTRY_BASE_ARTIFACTS \
--context $GIT_NODE_IMPORT \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_PUBLIC_URL}/ \
--assign-identity
Menambahkan kredensial ke tugas untuk registri publik yang disimulasikan:
az acr task credential add \
-n base-import-node \
-r $REGISTRY_BASE_ARTIFACTS \
--login-server $REGISTRY_PUBLIC_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-password \
--use-identity [system]
Berikan akses tugas ke nilai baca dari key vault:
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name base-import-node \
--registry $REGISTRY_BASE_ARTIFACTS \
--query identity.principalId --output tsv) \
--secret-permissions get
Menjalankan tugas impor:
az acr task run -n base-import-node -r $REGISTRY_BASE_ARTIFACTS
Catatan
Jika tugas gagal karena ./test.sh: Permission denied
, pastikan skrip memiliki izin eksekusi, dan diterapkan kembali ke repo Git:
chmod +x ./test.sh
Perbarui gambar hello-world
g untuk dibangun dari gambar node
berpagar
Buat token akses untuk mengakses registri artefak dasar, yang tercakup ke read
dari repositori node
. Kemudian, atur ke dalam key vault:
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-user" \
--value "registry-${REGISTRY_BASE_ARTIFACTS}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-user" \
--registry $REGISTRY_BASE_ARTIFACTS \
--repository node content/read \
-o tsv \
--query credentials.passwords[0].value)
Tambahkan kredensial ke tugas hello-world untuk registri artefak dasar:
az acr task credential add \
-n hello-world \
-r $REGISTRY \
--login-server $REGISTRY_BASE_ARTIFACTS_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_BASE_ARTIFACTS}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_BASE_ARTIFACTS}-password \
--use-identity [system]
Perbarui tugas untuk mengubah REGISTRY_FROM_URL
untuk menggunakan registri BASE_ARTIFACTS
az acr task update \
-n hello-world \
-r $REGISTRY \
--set KEYVAULT=$AKV \
--set REGISTRY_FROM_URL=${REGISTRY_BASE_ARTIFACTS_URL}/ \
--set ACI=$ACI \
--set ACI_RG=$ACI_RG
Jalankan tugas hello-world untuk mengubah dependensi gambar dasarnya:
az acr task run -r $REGISTRY -n hello-world
Memperbarui gambar dasar dengan perubahan "valid"
- Buka
Dockerfile
di repositoribase-image-node
. - Ubah
BACKGROUND_COLOR
keGreen
untuk mensimulasikan perubahan yang valid.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Green
Lakukan perubahan dan pantau urutan pembaruan:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Setelah berjalan, ketik Ctrl+C dan pantau log:
az acr task logs -r $REGISTRY_PUBLIC
Setelah selesai, pantau tugas impor gambar dasar:
watch -n1 az acr task list-runs -r $REGISTRY_BASE_ARTIFACTS -o table
Setelah berjalan, ketik Ctrl+C dan pantau log:
az acr task logs -r $REGISTRY_BASE_ARTIFACTS
Setelah selesai, pantau tugas hello-world:
watch -n1 az acr task list-runs -r $REGISTRY -o table
Setelah berjalan, ketik Ctrl+C dan pantau log:
az acr task logs -r $REGISTRY
Setelah selesai, dapatkan alamat IP situs yang meng-hosting gambar hello-world
yang diperbarui:
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Di browser Anda, buka situs, yang seharusnya memiliki latar belakang hijau (valid).
Menampilkan alur kerja yang dipagari
Lakukan langkah-langkah di bagian sebelumnya lagi, dengan warna latar belakang merah.
- Buka
Dockerfile
di repobase-image-node
- Ubah
BACKGROUND_COLOR
keRed
untuk mensimulasikan perubahan yang tidak valid.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Red
Lakukan perubahan dan pantau urutan pembaruan:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Setelah berjalan, ketik Ctrl+C dan pantau log:
az acr task logs -r $REGISTRY_PUBLIC
Setelah selesai, pantau tugas impor gambar dasar:
watch -n1 az acr task list-runs -r $REGISTRY_BASE_ARTIFACTS -o table
Setelah berjalan, ketik Ctrl+C dan pantau log:
az acr task logs -r $REGISTRY_BASE_ARTIFACTS
Pada titik ini, Anda akan melihat validasi kegagalan tugas base-import-node dan menghentikan urutan untuk menerbitkan pembaruan hello-world
. Output kurang lebih seperti:
[...]
2020/10/30 03:57:39 Launching container with name: validate-base-image
Validating Image
NODE_VERSION: 15-alpine
BACKGROUND_COLOR: Red
ERROR: Invalid Color: Red
2020/10/30 03:57:40 Container failed during run: validate-base-image. No retries remaining.
failed to run step ID: validate-base-image: exit status 1
Terbitkan pembaruan untuk hello-world
Perubahan pada gambar hello-world
akan terus menggunakan gambar node
terakhir yang divalidasi.
Setiap perubahan tambahan pada gambar node
dasar yang melewati validasi yang dipagari akan memicu pembaruan gambar dasar pada gambar hello-world
.
Membersihkan
Bila tidak lagi diperlukan, hapus sumber daya yang digunakan dalam artikel ini.
az group delete -n $REGISTRY_RG --no-wait -y
az group delete -n $REGISTRY_PUBLIC_RG --no-wait -y
az group delete -n $REGISTRY_BASE_ARTIFACTS_RG --no-wait -y
az group delete -n $AKV_RG --no-wait -y
az group delete -n $ACI_RG --no-wait -y
Langkah berikutnya
Dalam artikel ini. Anda menggunakan tugas ACR untuk membuat alur kerja pemagaran otomatis untuk memperkenalkan gambar dasar yang diperbarui ke lingkungan Anda. Lihat informasi terkait untuk mengelola gambar di Azure Container Registry.