Oktatóanyag: Tárolórendszerkép-buildek automatizálása alaprendszerkép azure-tárolóregisztrációs adatbázisban való frissítésekor
Az ACR-feladatok támogatják az automatizált tárolórendszerkép-buildeket a tároló alaprendszerképének frissítésekor, például amikor az operációs rendszert vagy az alkalmazás-keretrendszert az egyik alaprendszerképben javítják.
Ebben az oktatóanyagban megtudhatja, hogyan hozhat létre olyan ACR-feladatot, amely egy felhőbeli buildet aktivál, amikor egy tároló alaprendszerképét ugyanarra a beállításjegyzékre küldi. Megpróbálhat egy oktatóanyagot egy olyan ACR-feladat létrehozásához is, amely rendszerkép-buildet aktivál, amikor egy alaprendszerképet egy másik Azure-tárolóregisztrációs adatbázisba küld.
Ebben az oktatóanyagban:
- Az alapként szolgáló rendszerkép összeállítása
- Hozzon létre egy alkalmazásrendszerképet ugyanabban a beállításjegyzékben az alaprendszerkép nyomon követéséhez
- Az alapként szolgáló rendszerkép frissítése egy alkalmazásrendszerkép-feladat aktiválásához
- Az aktivált feladat megjelenítése
- A frissített alkalmazás-rendszerkép ellenőrzése
Előfeltételek
Az előző oktatóanyagok elvégzése
Ez az oktatóanyag feltételezi, hogy már konfigurálta a környezetet, és elvégezte a sorozat első két oktatóanyagának lépéseit, amelyekben:
- Azure Container Registry létrehozása
- Mintaadattár leágaztatása
- Mintaadattár klónozása
- Személyes hozzáférési jogkivonat létrehozása a GitHubban
Ha még nem tette meg, végezze el az alábbi oktatóanyagokat a folytatás előtt:
Tárolórendszerképek összeállítása a felhőben az Azure Container Registry Tasks használatával
Tárolórendszerképek összeállításának automatizálása az Azure Container Registry Tasks használatával
A környezet konfigurálása
Használja a Bash-környezetet az Azure Cloud Shell. További információ: Rövid útmutató a Bashhez az Azure Cloud Shell-ben.
Ha helyileg szeretné futtatni a PARANCSSOR-referenciaparancsokat, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ehhez a cikkhez az Azure CLI 2.0.46-os vagy újabb verziója szükséges. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Láss el ezeket a rendszerhéj-környezeti változókat a környezetnek megfelelő értékekkel. Ez a lépés nem feltétlenül szükséges, de némileg könnyebbé teszi az oktatóanyagban lévő többsoros Azure CLI-parancsok végrehajtását. Ha nem tölti fel ezeket a környezeti változókat, manuálisan kell lecserélnie az egyes értékeket, bárhol is jelenjenek meg a példaparancsokban.
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
Az alapként szolgáló rendszerkép frissítése forgatókönyv
Ez az oktatóanyag végigvezeti egy alaprendszerkép-frissítési forgatókönyvön, amelyben egy alaprendszerkép és egy alkalmazásrendszerkép egyetlen beállításjegyzékben van fenntartva.
A kódminta két Docker-fájlt tartalmaz: egy alkalmazás-rendszerképet, és egy rendszerképet, amelyet az alkalmazás-rendszerkép az alapként szolgáló rendszerképeként ad meg. A következő szakaszokban létrehoz egy ACR-feladatot, amely automatikusan elindítja az alkalmazás lemezképének buildelt változatát, amikor az alaprendszerkép új verzióját leküldi ugyanahhoz a tárolóregisztrációs adatbázishoz.
Dockerfile-app: Egy kisméretű Node.js-webalkalmazás, amely az alapjául szolgáló Node.js-verziót jelző statikus weboldalt jelenít meg. A verziósztring szimulált elem: az alapként szolgáló rendszerképben definiált környezeti változó (
NODE_VERSION
) tartalmát jeleníti meg.Dockerfile-base: A rendszerkép, amelyet a
Dockerfile-app
az alapjaként ad meg. Egy Node-rendszerképen alapul, és tartalmazza aNODE_VERSION
környezeti változót.
A következő szakaszokban létrehozunk egy feladatot, frissítjük a NODE_VERSION
értékét az alapként szolgáló rendszerkép Docker-fájljában, majd az ACR Tasks használatával összeállítjuk az alapként szolgáló rendszerképet. Amikor az ACR-feladat leküldi az alapként szolgáló új rendszerképet a regisztrációs adatbázisba, az automatikusan kiváltja az alkalmazás-rendszerkép összeállítását. Ha kívánja, az alkalmazástároló-rendszerkép helyi futtatásával megtekintheti az összeállított rendszerképek eltérő verzió-sztringjeit.
Ebben az oktatóanyagban az ACR-feladat létrehoz és leküld egy Docker-fájlban megadott alkalmazástároló-lemezképet. Az ACR-feladatok többlépéses feladatokat is futtathatnak egy YAML-fájl használatával a több tároló összeállításának, leküldésének és opcionális tesztelésének lépéseinek meghatározásához.
Az alapként szolgáló rendszerkép összeállítása
Első lépésként készítse el az alaprendszerképet egy ACR Tasks gyorsfeladattal az az acr build használatával. Amint azt a sorozat első részében bemutattuk, ez a folyamat nem csupán összeállítja a rendszerképet, hanem siker esetén le is küldi azt a tárolóregisztrációs adatbázisba.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Tevékenység létrehozása
Ezután hozzon létre egy feladatot az az acr task create paranccsal:
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#main \
--file Dockerfile-app \
--git-access-token $GIT_PAT
Ez a tevékenység hasonló az előző oktatóanyagban létrehozott tevékenységhez. A feladat utasítja az ACR Tasksot egy rendszerkép-összeállítás aktiválására, amikor a rendszer leküld egy véglegesítést a --context
által megadott adattárba. Míg az előző oktatóanyagban a rendszerkép létrehozásához használt Dockerfile egy nyilvános alaprendszerképet határoz meg (FROM node:15-alpine
), a dockerfile ebben a feladatban a Dockerfile-app egy alaprendszerképet ad meg ugyanabban a beállításjegyzékben:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
Ezzel a konfigurációval az oktatóanyag későbbi részében egyszerűen szimulálható egy keretrendszer-javítás az alaprendszerképben.
Az alkalmazástároló összeállítása
Az az acr-feladatfuttatással manuálisan aktiválhatja a feladatot, és létrehozhatja az alkalmazás lemezképét. Erre a lépésre azért van szükség, hogy a feladat nyomon kövesse az alkalmazás lemezképének az alaprendszerképhez való függőségét.
az acr task run --registry $ACR_NAME --name baseexample1
Amint a feladat véget ért, jegyezze fel a Run ID (Futtatási azonosító) értékét (például „da6”), ha a következő nem kötelező lépést is végre szeretné hajtani.
Nem kötelező: Alkalmazástároló helyi futtatása
Ha helyi környezetben dolgozik (nem a Cloud Shellben), és a Docker telepítve lett, a tároló futtatásakor az alkalmazást megtekintheti egy webböngészőben, mielőtt újraépítené az alapként szolgáló rendszerképét. A Cloud Shell használata esetén hagyja ki ezt a szakaszt (a Cloud Shell nem támogatja az az acr login
és a docker run
parancsot).
Először hitelesítse magát a tárolóregisztrációs adatbázisba az az acr-bejelentkezéssel:
az acr login --name $ACR_NAME
Futtassa helyileg a tárolót a docker run
paranccsal. Cserélje le <a futtatási azonosítót> az előző lépés kimenetében található futtatási azonosítóra (például "da6"). Ez a példa megnevezi a tárolót myapp
, és tartalmazza azt a --rm
paramétert, amely eltávolítja a tárolót a leállításakor.
docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
Lépjen a http://localhost:8080
címre a böngészőben, és a weboldalon a Node.js verziószámának kell megjelennie az alábbihoz hasonlóan. Egy későbbi lépésben majd újabbra frissíti a verziót úgy, hogy egy „a” tagot ad hozzá a verziósztringhez.
A tároló leállításához és eltávolításához futtassa a következő parancsot:
docker stop myapp
Összeállítások listázása
Ezután listázza a feladatfuttatásokat, amelyeket az ACR Tasks elkészített a regisztrációs adatbázis számára az az acr task list-runs paranccsal:
az acr task list-runs --registry $ACR_NAME --output table
Ha elvégezte az előző oktatóanyagot (és nem törölte a regisztrációs adatbázist), az alábbihoz hasonló kimenetnek kell megjelennie. Jegyezze fel a feladatfuttatások számát, valamint a RUN ID oszlop legújabb értékét, hogy összehasonlíthassa a kimenettel, miután frissítette az alapként szolgáló rendszerképet a következő szakaszban.
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
Az alapként szolgáló rendszerkép frissítése
Itt most egy keretrendszer-javítást szimulál az alapként szolgáló rendszerképben. Módosítsa a Dockerfile-base fájlt, és adja hozzá az „a” tagot a NODE_VERSION
attribútumban meghatározott verziószám után:
ENV NODE_VERSION 15.2.1a
Futtasson egy gyors feladatot az alapként szolgáló módosított rendszerkép összeállításához. Jegyezze fel a kimenetben található Run ID (Futtatási azonosító) értékét.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Miután befejeződött az összeállítás, és az ACR-feladat leküldte az alapként szolgáló új rendszerképet a regisztrációs adatbázisba, az aktiválja az alkalmazás-rendszerkép összeállítását. Eltarthat egy ideig, amíg a korábban létrehozott feladat aktiválja az alkalmazás-rendszerkép összeállítását, mivel észlelnie kell az újonnan összeállított és leküldött alapként szolgáló rendszerképet.
Frissített összeállítás listázása
Az alapként szolgáló rendszerkép frissítését követően listázza újra a feladatfuttatásokat, hogy összehasonlíthassa azokat a korábbi listával. Ha a kimenet eleinte nem tér el a korábbitól, időnként futtassa újra a parancsot, amíg az új feladatfuttatás meg nem jelenik a listában.
az acr task list-runs --registry $ACR_NAME --output table
A kimenet a következőkhöz hasonló. Az utolsóként végrehajtott összeállítás TRIGGER (Eseményindító) értékének az „Image Update” (Rendszerképfrissítés) értéknek kell lennie, ami jelzi, hogy a feladatot az alapként szolgáló rendszerkép gyors feladata aktiválta.
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
Ha az újonnan létrehozott tároló futtatásának következő opcionális lépését szeretné végrehajtani a frissített verziószám megtekintéséhez, jegyezze fel a rendszerképfrissítés által aktivált build RUN ID értékét (az előző kimenetben ez a "ca11").
Nem kötelező: Az újonnan összeállított rendszerkép futtatása
Ha helyi környezetben dolgozik (nem a Cloud Shellben), és a Docker telepítve lett, futtassa az új alkalmazás-rendszerképet, amint annak összeállítása befejeződött. A <run-id>
helyére az előző lépésben beszerzett RUN ID (Futtatási azonosító) értéket írja. A Cloud Shell használata esetén hagyja ki ezt a szakaszt (a Cloud Shell nem támogatja a docker run
parancsot).
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
Lépjen a http://localhost:8081 címre a böngészőben, ahol a weboldalon a Node.js frissített verziószámának (az „a” taggal kiegészítve) kell megjelennie:
Figyelje meg, hogy miután frissítette az alapként szolgáló rendszerképet egy új verziószámmal, az utoljára összeállított alkalmazás-rendszerkép az új verziót jeleníti meg. Az ACR Tasks észlelte az alapként szolgáló rendszerkép módosítását, és automatikusan újraépítette az alkalmazás-rendszerképet.
A tároló leállításához és eltávolításához futtassa a következő parancsot:
docker stop updatedapp
Következő lépések
Ez az oktatóanyag azt mutatta be, hogyan használhatók a feladatok a tárolórendszerképek összeállításának automatikus aktiválására a rendszerkép alapként szolgáló rendszerképének frissítése esetén.
A nyilvános forrásból származó alapképek teljes körű kezeléséhez lásd: Nyilvános tartalom felhasználása és karbantartása Azure Container Registry Feladatok használatával.
Most lépjen tovább a következő oktatóanyagra, amelyből megtudhatja, hogyan aktiválhat tevékenységeket egy meghatározott ütemezésben.