Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ACR Tasks ondersteunt geautomatiseerde builds van containerinstallatiekopieën wanneer de basisinstallatiekopieën van een container worden 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ën van een container naar hetzelfde register worden gepusht. U kunt ook een tutorial proberen om een ACR-taak te maken die een build van een afbeelding activeert wanneer een basisafbeelding naar een ander Azure-containerregister wordt gepusht.
In deze handleiding:
- De basisafbeelding bouwen
- Een toepassingsimage maken in hetzelfde register om de basisimage bij te houden.
- De basisafbeelding bijwerken om een toepassing afbeeldingstaak te activeren
- De geactiveerde taak weergeven
- Controleren van bijgewerkte applicatie-afbeelding
Prerequisites
Voltooi de vorige zelfstudies
In deze zelfstudie wordt ervan uitgegaan dat u uw omgeving al hebt geconfigureerd en dat u de stappen in de eerste twee zelfstudies in de reeks hebt voltooid, waarin u:
- Azure Container Registry maken
- Voorbeeldopslagplaats voor fork
- De voorbeeldopslagplaats klonen
- Persoonlijk toegangstoken voor GitHub maken
Als u dit nog niet hebt gedaan, voltooit u de volgende zelfstudies voordat u doorgaat:
Containerinstallatiekopieën bouwen in de cloud met Azure Container Registry Tasks
Containerimagebuilds automatiseren met Azure Container Registry-taken
De omgeving configureren
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- Voor dit artikel is versie 2.0.46 of hoger van De Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Vul deze shell-omgevingsvariabelen in met waarden die geschikt zijn voor uw omgeving. Deze stap is niet strikt vereist, maar maakt het uitvoeren van de Azure CLI-opdrachten met meerdere regels in deze zelfstudie iets eenvoudiger. Als u deze omgevingsvariabelen niet vult, moet u elke waarde handmatig vervangen, waar deze ook 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
Updatescenario basisinstallatiekopieën
In deze handleiding wordt u begeleid bij een updatescenario voor basisimages waarin een basisimage en een applicatie-image in één register worden onderhouden.
Het codevoorbeeld bevat twee Dockerfiles: een toepassingsimage en een image dat als basis is opgegeven. In de volgende secties maakt u een ACR-taak die automatisch een build van de toepassingsinstallatiekopieën activeert wanneer een nieuwe versie van de basisinstallatiekopieën naar hetzelfde containerregister wordt gepusht.
Dockerfile-app: een kleine Node.js-webtoepassing die een statische webpagina weergeeft met de Node.js versie waarop deze is gebaseerd. De versiestring wordt gesimuleerd: hiermee wordt de inhoud van een omgevingsvariabele weergegeven,
NODE_VERSIONdie is gedefinieerd in de basisimage.Dockerfile-base: het installatiekopie dat
Dockerfile-appals basis aanwijst. Het is zelf gebaseerd op een Node image en bevat deNODE_VERSIONde omgevingsvariabele.
In de volgende secties maakt u een taak, werkt u de waarde van NODE_VERSION in het Dockerfile van de basisimage bij, en gebruikt u vervolgens ACR Tasks om de basisimage te bouwen. Wanneer de ACR-taak het nieuwe basisimage naar uw register pusht, wordt automatisch een build van het applicatie-image geactiveerd. Desgewenst kunt u de container image van de applicatie lokaal uitvoeren om de verschillende versiestrings in de geïntegreerde images te bekijken.
In deze tutorial bouwt en pusht de ACR-taak een containerimage van de applicatie, zoals aangegeven in een Dockerfile. ACR Tasks kan ook taken met meerdere stappen uitvoeren met behulp van een YAML-bestand om stappen te definiëren voor het bouwen, pushen en eventueel testen van meerdere containers.
De basisafbeelding bouwen
Start met het bouwen van de basisafbeelding met een snelle ACR Tasks-taak met behulp van az acr build. Zoals besproken in de eerste handleiding in de reeks, wordt met dit proces niet alleen de image gebouwd, maar ook naar uw containerregister gepushed indien de build succesvol is.
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. Hiermee worden ACR-taken geïnstrueerd om een image-build te activeren wanneer committen worden gepusht naar de opslagplaats die is opgegeven door --context. Terwijl de Dockerfile die wordt gebruikt om de image te bouwen in de vorige zelfstudie een openbare basisimage (FROM node:15-alpine) opgeeft, specificeert de Dockerfile-app in deze taak een basisimage in hetzelfde register:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
Met deze configuratie kunt u eenvoudig een frameworkpatch in de basisimage simuleren later in deze zelfstudie.
De toepassingscontainer bouwen
Gebruik az acr task run om de taak handmatig te activeren en de toepassingsinstallatiekopieën te bouwen. Deze stap is nodig, zodat de taak de afhankelijkheid van de applicatie-afbeelding op de basisafbeelding bijhoudt.
az acr task run --registry $ACR_NAME --name baseexample1
Zodra de taak is voltooid, noteert u de run-id (bijvoorbeeld 'da6') als u de volgende optionele stap wilt voltooien.
Optioneel: Toepassingscontainer lokaal uitvoeren
Als u lokaal werkt (niet in de Cloud Shell) en Docker hebt geïnstalleerd, voert u de container uit om de toepassing weer te geven in een webbrowser voordat u de basisinstallatiekopieën opnieuw bouwt. Als u Cloud Shell gebruikt, slaat u deze sectie over (Cloud Shell biedt geen ondersteuning az acr login voor of docker run).
Verifieer eerst uw containerregister met az acr login:
az acr login --name $ACR_NAME
Voer nu de container lokaal uit met docker run. Vervang <run-id> met de Run ID zoals vermeld in de uitvoer van de vorige stap (bijvoorbeeld "da6"). In dit voorbeeld wordt de container myapp genoemd en wordt de --rm parameter opgenomen 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>
Navigeer naar http://localhost:8080 in uw browser en u ziet het Node.js versienummer dat op de webpagina wordt weergegeven, vergelijkbaar met de volgende. In een latere stap kun je de versie verhogen door een 'a' toe te voegen aan het versienummer.
Voer de volgende opdracht uit om de container te stoppen en te verwijderen:
docker stop myapp
De builds weergeven
Geef vervolgens de taakuitvoeringen weer die ACR Tasks voor uw register heeft voltooid met behulp van de opdracht az acr task list-runs :
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 uitvoer die er ongeveer als volgt uitziet. Noteer het aantal taakuitvoeringen en de meest recente RUN ID, zodat u de uitvoer kunt vergelijken nadat u de basisinstallatiekopieën in de volgende sectie 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 basisimage bijwerken
Hier simuleert u een framework-patch in de basisafbeelding. Bewerk Dockerfile-base en voeg een 'a' toe na het versienummer dat is gedefinieerd in NODE_VERSION:
ENV NODE_VERSION 15.2.1a
Voer een kortdurende taak uit om de gewijzigde basisimage te bouwen. Noteer de 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 basisafbeelding naar uw register heeft gepusht, activeert dit een build van de toepassingsafbeelding. Het kan even duren voordat de taak die u eerder hebt gemaakt, het bouwen van de applicatie-image start, omdat de zojuist gebouwde en gepushte basisimage moet worden gedetecteerd.
Bijgewerkte build weergeven
Nu u de basisimage hebt bijgewerkt, lijst uw taakuitvoeringen opnieuw op om te vergelijken met de eerdere lijst. Als de uitvoer in eerste instantie niet verschilt, voert u de opdracht regelmatig uit om te zien dat de nieuwe taakuitvoering wordt weergegeven in de lijst.
az acr task list-runs --registry $ACR_NAME --output table
De uitvoer is vergelijkbaar met het volgende. De TRIGGER voor de laatst uitgevoerde build moet 'Image Update' zijn, wat aangeeft dat de taak is gestart door uw snelle taak van de basisimage.
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 het uitvoeren van de zojuist gebouwde container wilt uitvoeren om het bijgewerkte versienummer te zien, noteert u de run-id-waarde voor de build die door Image Update is geactiveerd (in de voorgaande uitvoer is dit ca11).
Optioneel: Uitvoeren van de nieuw gebouwde image
Als u lokaal werkt (niet in de Cloud Shell) en Docker hebt geïnstalleerd, voert u de nieuwe toepassingsinstallatiekopieën uit zodra de build is voltooid. Vervang door <run-id> de RUN ID die u in de vorige stap hebt verkregen. Als u Cloud Shell gebruikt, kunt u deze sectie overslaan (Cloud Shell biedt geen ondersteuning).docker run
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
Ga naar http://localhost:8081 uw browser en u ziet nu het bijgewerkte versienummer van de Node.js (met de 'a') op de webpagina:
Belangrijk om te weten is dat u uw basisinstallatiekopie hebt bijgewerkt met een nieuw versienummer, maar de laatst gebouwde toepassingsinstallatiekopie geeft de nieuwe versie weer. ACR Tasks heeft uw wijziging in de basisafbeelding opgehaald en uw toepassingsafbeelding 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 kunt gebruiken om automatisch builds van containerafbeeldingen te activeren wanneer de basisafbeelding is bijgewerkt.
Zie Openbare inhoud gebruiken en onderhouden met Azure Container Registry Tasks voor een volledige workflow voor het beheren van basisafbeeldingen die afkomstig zijn van een openbare bron.
Ga nu verder met de volgende zelfstudie om te leren hoe u taken activeert volgens een gedefinieerd schema.