Kurz: Automatizace sestavení imagí kontejneru při aktualizaci základní image v registru kontejneru Azure
ACR Tasks podporuje automatizované sestavení imagí kontejneru při aktualizaci základní image kontejneru, například při opravě operačního systému nebo architektury aplikace v jedné ze základních imagí.
V tomto kurzu se dozvíte, jak vytvořit úlohu ACR, která aktivuje sestavení v cloudu, když se základní image kontejneru odešle do stejného registru. Můžete také vyzkoušet kurz vytvoření úlohy ACR, která aktivuje sestavení image při odeslání základní image do jiného registru kontejneru Azure.
V tomto kurzu:
- Sestavit základní image
- Vytvoření image aplikace ve stejném registru pro sledování základní image
- Aktualizovat základní image tak, aby aktivovala úlohu image aplikace
- Zobrazit aktivovanou úlohu
- Ověřit aktualizovanou image aplikace
Požadavky
Dokončení předchozích kurzů
Tento kurz předpokládá, že jste už nakonfigurovali prostředí a dokončili kroky v prvních dvou kurzech série, ve kterých:
- Vytvoření registru kontejneru Azure
- Vytvoření forku ukázkového úložiště
- Klonování ukázkového úložiště
- Vytvoření tokenu PAT GitHubu
Pokud jste to ještě neudělali, před pokračováním proveďte následující kurzy:
Sestavení imagí kontejnerů v cloudu pomocí Azure Container Registry Tasks
Automatizace sestavení imagí kontejnerů pomocí Azure Container Registry Tasks
Konfigurace prostředí
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Tento článek vyžaduje verzi 2.0.46 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Tyto proměnné prostředí naplňte hodnotami vhodnými pro vaše prostředí. Tento krok není nezbytně nutný, ale usnadní provádění víceřádkových příkazů Azure CLI v tomto kurzu. Pokud tyto proměnné prostředí nenaplníte, musíte každou hodnotu ručně nahradit všude tam, kde se zobrazí v ukázkových příkazech.
ACR_NAME=<registry-name> # The name of your Azure container registry
GIT_USER=<github-username> # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the second tutorial
Scénář aktualizace základní image
Tento kurz vás provede scénářem aktualizace základní image, ve kterém se základní image a image aplikace udržují v jednom registru.
Vzorový kód zahrnuje dva soubory Dockerfile: image aplikace a image, na které je založená. V následujících částech vytvoříte úlohu ACR, která automaticky aktivuje sestavení image aplikace při vložení nové verze základní image do stejného registru kontejneru.
Dockerfile-app: Jedná se o malou webovou aplikaci Node.js, která vykreslí statickou webovou stránku zobrazující verzi Node.js, na které je založena. Řetězec verze je simulovaný: zobrazuje obsah proměnné prostředí
NODE_VERSION
, která je definovaná v základní imagi.Dockerfile-base: Image, kterou
Dockerfile-app
specifikuje jako svou základní image. Je založená na imagi Node a zahrnuje proměnnou prostředíNODE_VERSION
.
V následujících částech vytvoříte úlohu, aktualizujete hodnotu NODE_VERSION
v souboru Dockerfile základní image a potom použijete ACR Tasks k sestavení základní image. Když úloha ACR odešle do registru novou základní image, automaticky aktivuje sestavení image aplikace. Volitelně můžete spustit image kontejneru aplikace místně, abyste se mohli podívat na různé řetězce verze v sestavených imagích.
V tomto kurzu se vaše úloha ACR sestaví a odešle image kontejneru aplikace zadanou v souboru Dockerfile. ACR Tasks může také spouštět vícekrokové úlohy pomocí souboru YAML k definování kroků pro sestavení, nabízení a volitelné testování více kontejnerů.
Sestavit základní image
Začněte vytvořením základní image pomocí rychlé úlohy ACR Tasks pomocí příkazu az acr build. Jak je popsáno v prvním kurzu série, tímto postupem se nejen sestaví image, ale v případě úspěšného sestavení se odešle do registru kontejneru.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Vytvořit úkol
Dále pomocí příkazu az acr build-task create vytvořte úlohu:
az acr task create \
--registry $ACR_NAME \
--name baseexample1 \
--image helloworld:{{.Run.ID}} \
--arg REGISTRY_NAME=$ACR_NAME.azurecr.io \
--context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
--file Dockerfile-app \
--git-access-token $GIT_PAT
Tento úkol se podobá úloze vytvořené v předchozím kurzu. Dává službě ACR Tasks pokyn aktivovat sestavení image, když se do úložiště určeného parametrem --context
odešlou potvrzení. I když soubor Dockerfile použitý k sestavení image v předchozím kurzu určuje veřejnou základní image (FROM node:15-alpine
), soubor Dockerfile v této úloze, aplikace Dockerfile, určuje základní image ve stejném registru:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
Tato konfigurace usnadňuje simulaci opravy architektury v základní imagi později v tomto kurzu.
Sestavení kontejneru aplikace
Pomocí příkazu az acr task run ručně aktivujte úlohu a sestavte image aplikace. Tento krok je potřeba, aby úloha sleduje závislost image aplikace na základní imagi.
az acr task run --registry $ACR_NAME --name baseexample1
Jakmile se úloha dokončí, poznamenejte si ID spuštění (například „da6“), pokud chcete provést následující volitelný krok.
Volitelné: Spuštění kontejneru aplikace místně
Pokud pracujete místně (nejste v Cloud Shellu) a máte nainstalovaný Docker, spusťte kontejner, abyste zobrazili aplikaci vykreslenou ve webovém prohlížeči dříve, než opětovně sestavíte její základní image. Pokud Cloud Shell používáte, tuto část přeskočte (Cloud Shell nepodporuje az acr login
ani docker run
).
Nejprve se pomocí příkazu az acr login ověřte ve svém registru kontejneru:
az acr login --name $ACR_NAME
Teď pomocí docker run
spusťte kontejner místně. Nahraďte <run-id> za ID spuštění z výstupu z předchozího kroku (například „da6“). Tento příklad pojmenuje kontejner myapp
a obsahuje --rm
parametr pro odebrání kontejneru, když ho zastavíte.
docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
V prohlížeči přejděte na http://localhost:8080
. Měli byste vidět číslo verze Node.js vykreslené na webové stránce. Mělo by vypadat takto. V dalším kroku změníte verzi tak, že do řetězce verze přidáte znak „a“.
Pokud chcete kontejner zastavit a odebrat, spusťte následující příkaz:
docker stop myapp
Výpis sestavení
Dále pomocí příkazu az acr task list-runs vypište spuštění úloh, která služba ACR Tasks dokončila pro váš registr:
az acr task list-runs --registry $ACR_NAME --output table
Pokud jste dokončili předchozí kurz (a nevymazali jste registr), měli byste vidět výstup podobný následujícímu. Poznamenejte si počet spuštění úloh a ID nejnovějšího spuštění, abyste je mohli porovnat s výstupem po aktualizaci základní image, kterou provedete v další části.
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- --------- -------------------- ----------
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
Aktualizace základní image
V tomto kroku budete simulovat opravu architektury v základní imagi. Upravte Dockerfile-base a za číslo verze definované v NODE_VERSION
přidejte znak „a“:
ENV NODE_VERSION 15.2.1a
Spusťte rychlou úlohu, která sestaví upravenou základní image. Poznamenejte si ID spuštění uvedené ve výstupu.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Jakmile se sestavení dokončí a úloha ACR odešle novou základní image do registru, aktivuje se sestavení image aplikace. Než úloha, kterou jste vytvořili dříve, aktivuje sestavení image aplikace, může to chvíli trvat, protože musí zjistit nově sestavenou a odeslanou základní image.
Výpis aktualizovaného sestavení
Teď, když jste aktualizovali základní image, znovu zobrazte seznam spuštění úloh a porovnejte ho s předchozím seznamem. Pokud se napoprvé výstup neliší, opakovaně spouštějte příkaz, aby se nové spuštění úlohy v seznamu zobrazilo.
az acr task list-runs --registry $ACR_NAME --output table
Výstup je podobný tomuto. Triggerem pro poslední spuštěné sestavení by měl být „Image Update“ značící, že se úloha zahájila rychlou úlohou základní image.
Run ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- ------------ -------------------- ----------
ca11 baseexample1 linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:34
ca10 taskhelloworld linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:24
cay linux Succeeded Manual 2020-11-20T23:38:08Z 00:00:22
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
Pokud chcete provést následující volitelný krok spuštění nově sestaveného kontejneru, abyste viděli aktualizované číslo verze, poznamenejte si hodnotu ID SPUŠTĚNÍ pro sestavení aktivované aktualizací image (v předchozím výstupu je to ca11).
Volitelné: Spuštění nově sestavené image
Pokud pracujete místně (nejste v Cloud Shellu) a máte nainstalovaný Docker, spusťte novou image aplikace, jakmile se její sestavení dokončí. <run-id>
nahraďte hodnotou ID spuštění, kterou jste získali v předchozím kroku. Pokud Cloud Shell používáte, tuto část přeskočte (Cloud Shell nepodporuje docker run
).
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
V prohlížeči přejděte na http://localhost:8081. Měli byste vidět aktualizované číslo verze Node.js (se znakem „a“) na webové stránce:
Důležité je uvědomit si, že jste aktualizovali základní image s novým číslem verze, ale novou verzi zobrazuje poslední sestavená image aplikace. Služba ACR Tasks převzala změnu základní image a automaticky znovu sestavila image aplikace.
Pokud chcete kontejner zastavit a odebrat, spusťte následující příkaz:
docker stop updatedapp
Další kroky
V tomto kurzu jste zjistili, jak pomocí úlohy automaticky aktivovat sestavení imagí kontejnerů při aktualizaci základní image.
Úplný pracovní postup pro správu základních imagí pocházejících z veřejného zdroje najdete v tématu Jak využívat a udržovat veřejný obsah pomocí úloh služby Azure Container Registry.
Teď přejděte k dalšímu kurzu, kde se dozvíte, jak aktivovat úlohy podle definovaného plánu.