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

  • 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 a NODE_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.

Képernyőkép a mintaalkalmazásról a böngészőben

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:

Képernyőkép a frissített mintaalkalmazásról a böngészőben

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.