Zelfstudie: Builds van containerinstallatiekopieën automatiseren wanneer een basisinstallatiekopieën worden bijgewerkt in een Azure-containerregister
ACR Tasks ondersteunt de automatische compilatie van containerinstallatiekopieën wanneer de basisinstallatiekopie van een container wordt bijgewerkt, bijvoorbeeld wanneer u het besturingssysteem of toepassingsframework patcht in een van uw basisinstallatiekopieën.
In deze zelfstudie leert u hoe u een ACR-taak maakt waarmee een build in de cloud wordt geactiveerd wanneer de basisinstallatiekopie van een container naar hetzelfde register wordt gepusht. U kunt ook een zelfstudie volgen voor het maken van een ACR-taak waarmee de build van een installatiekopie wordt geactiveerd wanneer een basisinstallatiekopie naar een ander Azure-containerregister wordt gepusht.
In deze zelfstudie:
- De basisinstallatiekopie bouwen
- Een toepassingsinstallatiekopie maken in hetzelfde register om de basisinstallatiekopie te volgen
- De basisinstallatiekopie bijwerken om een taak voor een toepassingsinstallatiekopie bij te werken
- De geactiveerde taak weergeven
- De bijgewerkte toepassingsinstallatiekopie controleren
Vereisten
De vorige zelfstudies voltooien
In deze zelfstudie wordt ervan uitgegaan dat u de omgeving al hebt geconfigureerd en de stappen uit de eerste twee zelfstudies in de reeks hebt uitgevoerd:
- Azure Container Registry maken
- Voorbeeldopslagplaats fork
- Voorbeeldopslagplaats klonen
- Persoonlijk toegangstoken van GitHub maken
Als u de volgende zelfstudies nog niet hebt afgerond, doet u dit voordat u verdergaat:
Zelfstudie: containerinstallatiekopieën bouwen in de cloud met Azure Container Registry Tasks
Builds van containerinstallatiekopieën automatiseren met Azure Container Registry Tasks
De omgeving configureren
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Voor dit artikel is versie 2.0.46 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Vul deze variabelen voor de shell-omgeving in met waarden die geschikt zijn voor uw omgeving. Hoewel deze stap strikt genomen niet vereist is, vereenvoudigt u hiermee de uitvoering van meerregelige Azure CLI-opdrachten in deze zelfstudie. Als u deze omgevingsvariabelen niet invult, moet u elke bijbehorende waarde handmatig vervangen wanneer deze wordt weergegeven in de voorbeeldopdrachten.
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
Bijwerkscenario van basisinstallatiekopieën
In deze zelfstudie besteden we aandacht aan een scenario voor het bijwerken van een basisinstallatie kopie waarbij een basisinstallatiekopie en een toepassingsinstallatiekopie in één register worden onderhouden.
Het codevoorbeeld bevat twee Dockerfiles: een toepassingsinstallatiekopie en een installatiekopie als basis. In de volgende gedeeltes maakt u een ACR-taak waarmee automatisch een build van de toepassingsinstallatiekopie wordt geactiveerd wanneer een nieuwe versie van de basisinstallatiekopie naar hetzelfde containerregister wordt gepusht.
Dockerfile-app: Een kleine Node.js-webtoepassing die een statische webpagina maakt waarop de Node.js-versie ervan wordt weergegeven. De versietekenreeks wordt gesimuleerd: deze geeft de inhoud weer van een omgevingsvariabele,
NODE_VERSION
, die is gedefinieerd in de basisinstallatiekopie.Dockerfile-basis: De installatiekopie die
Dockerfile-app
opgeeft als basis. Deze is zelf gebaseerd op een Node-installatiekopie en bevat de omgevingsvariabeleNODE_VERSION
.
In de volgende gedeeltes maakt u een taak, werkt u de waarde NODE_VERSION
in het Docker-bestand van de basisinstallatiekopie bij en gebruikt u ACR Tasks om de basisinstallatiekopie te maken. Zodra de ACR-taak de nieuwe basisinstallatiekopie naar uw register pusht, wordt er automatisch een build van de toepassingsinstallatiekopie geactiveerd. Optioneel kunt u de containerinstallatiekopie van de toepassing lokaal uitvoeren om de verschillende versietekenreeksen in de ingebouwde installatiekopieën te bekijken.
In deze zelfstudie wordt met uw ACR-taak een containerinstallatiekopie voor een toepassing gemaakt en gepusht. De installatiekopie is opgegeven in een Dockerfile. Met ACR-taken kunnen ook taken bestaande uit meerdere stappen worden uitgevoerd. Hierbij wordt een YAML-bestand gebruikt om de stappen voor het bouwen, pushen en optioneel testen van meerdere containers te definiëren.
De basisinstallatiekopie bouwen
Start met het bouwen van de basisinstallatiekopie met een snelle taak met behulp van az acr build. Zoals beschreven in de eerste zelfstudie in de reeks, wordt met dit proces niet alleen de installatiekopie gebouwd, maar wordt deze ook naar het containerregister gepusht als de build is gelukt.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Een taak maken
Maak vervolgens een taak met az acr task create:
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
Deze taak is vergelijkbaar met de taak die u in de vorige zelfstudie hebt gemaakt. De taak geeft ACR Tasks de opdracht om een installatiekopiebuild te activeren wanneer doorvoeracties worden gepusht naar de opslagplaats die met --context
is opgegeven. De Dockerfile die wordt gebruikt om de installatiekopie te bouwen in de vorige zelfstudie, geeft een openbare basisinstallatiekopie (FROM node:15-alpine
) op. De Dockerfile in deze taak, Dockerfile-app, geeft een basisinstallatiekopie in hetzelfde register op:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
Met deze configuratie kunt u eenvoudig een frameworkpatch in de basisinstallatiekopie simuleren verderop in deze zelfstudie.
De toepassingscontainer bouwen
Gebruik az acr task run om handmatig de taak te activeren en de toepassingsinstallatiekopie te bouwen: Deze stap is nodig om ervoor te zorgen dat de taak de afhankelijkheid van de toepassingsinstallatiekopie van de basisinstallatiekopie bijhoudt.
az acr task run --registry $ACR_NAME --name baseexample1
Zodra de taak is voltooid, moet u de run-id (bijvoorbeeld 'da6') noteren als u de volgende optionele stap wilt voltooien.
Optioneel: toepassingscontainer lokaal uitvoeren
Als u lokaal werkt (niet in Cloud Shell) en Docker hebt geïnstalleerd, voert u de container uit om de toepassing te bekijken in een webbrowser voordat u de basisinstallatiekopie opnieuw bouwt. Als u Cloud Shell gebruikt, slaat u deze sectie over (Cloud Shell biedt geen ondersteuning voor az acr login
of docker run
).
Verifieer uzelf eerst bij uw containerregister met az acr login:
az acr login --name $ACR_NAME
Voer de container nu lokaal uit met docker run
. Vervang <run-id> door de gevonden run-id in de uitvoer van de vorige stap (bijvoorbeeld 'da6'). Dit voorbeeld heeft de container myapp
en bevat de parameter --rm
om de container te verwijderen wanneer u deze stopt.
docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
Ga naar http://localhost:8080
in uw browser. U ziet nu het weergegeven nummer van de Node.js-versie op de webpagina, zoals hieronder weergegeven. In een latere stap verhoogt u de versie door een 'a' toe te voegen aan de versietekenreeks.
Voer de volgende opdracht uit om de container te stoppen en te verwijderen:
docker stop myapp
De builds weergeven
Geef vervolgens een overzicht weer van de taken die ACR Tasks heeft voltooid voor het register door de opdracht az acr task list-runs te gebruiken:
az acr task list-runs --registry $ACR_NAME --output table
Als u de vorige zelfstudie hebt voltooid (en het register niet hebt verwijderd), ziet u de uitvoer zoals hieronder weergegeven. Noteer het aantal taak-runs en de meest recente run-id, zodat u de uitvoer kunt vergelijken nadat u in het volgende gedeelte de basisinstallatiekopie hebt bijgewerkt.
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
De basisinstallatiekopie bijwerken
Hier kunt u een frameworkpatch in de basisinstallatiekopie simuleren. Bewerk de Dockerfile-basis en voeg een 'a' toe achter het versienummer dat is gedefinieerd in NODE_VERSION
:
ENV NODE_VERSION 15.2.1a
Voer een snelle taak uit om de gewijzigde basisinstallatiekopie te bouwen. Noteer de waarde van run-id in de uitvoer.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Zodra de build is voltooid en de ACR-taak de nieuwe basisinstallatiekopie naar uw register heeft gepusht, wordt automatisch een build van de toepassingsinstallatiekopie geactiveerd. Het kan enkele ogenblikken duren voordat de toepassingsinstallatiekopie wordt geactiveerd door de taak die u eerder hebt gemaakt, omdat met de taak de pas gemaakte en gepushte basisinstallatiekopie moet worden gedetecteerd.
Bijgewerkte build weergeven
Nu u de basisinstallatiekopie hebt bijgewerkt, geeft u opnieuw een lijst van uw taken weer om deze te vergelijken met de vorige lijst. Als de uitvoer in eerste instantie niet verschilt, voert u regelmatig de opdracht uit tot de nieuwe taak-run in de lijst wordt weergegeven.
az acr task list-runs --registry $ACR_NAME --output table
De uitvoer lijkt op het volgende. De TRIGGER voor de als laatste uitgevoerde build moet Update van installatiekopie zijn. Hiermee wordt aangegeven dat de taak is gestart door uw snelle taak van de basisinstallatiekopie.
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
Als u de volgende optionele stap van de nieuw gebouwde container wilt uitvoeren om het bijgewerkte versienummer te zien, noteert u de RUN ID-waarde voor het bijwerken van de door de installatiekopie getriggerde build (in de vorige uitvoer is dit 'ca11').
Optioneel: nieuw gebouwde installatiekopie uitvoeren
Als u lokaal werkt (niet in Cloud Shell) en u hebt Docker geïnstalleerd, voert u de nieuwe toepassingsinstallatiekopie uit zodra de build is voltooid. Vervang <run-id>
door de run-id uit de vorige stap. Als u Cloud Shell gebruikt, slaat u deze sectie over (Cloud Shell biedt geen ondersteuning voor docker run
).
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
Ga naar http://localhost:8081 in uw browser. U ziet nu het bijgewerkte nummer van de Node.js-versie (met de 'a') op de webpagina:
U hebt uw basisinstallatiekopie bijgewerkt met een nieuw versienummer, maar de toepassingsinstallatiekopie die als laatste is gebouwd, geeft nieuwe versie weer. ACR Tasks heeft uw wijziging van de basisinstallatiekopie herkend en heeft de toepassingsinstallatiekopie automatisch opnieuw opgebouwd.
Voer de volgende opdracht uit om de container te stoppen en te verwijderen:
docker stop updatedapp
Volgende stappen
In deze zelfstudie hebt u geleerd hoe u een taak configureert om automatisch builds van containerinstallatiekopieën te activeren wanneer een basisinstallatiekopie is bijgewerkt.
Zie Openbare inhoud gebruiken en onderhouden met Azure Container Registry Tasks voor een volledige werkstroom voor het beheren van basisinstallatiekopieën die afkomstig zijn van een openbare bron.
Ga nu verder met de volgende zelfstudie voor meer informatie over het activeren van taken volgens een gedefinieerd schema.