Egyéni szoftverek migrálása Azure-alkalmazás szolgáltatásba egyéni tároló használatával

Az Azure App Service előre meghatározott, IIS-en futó alkalmazáscsoportokat biztosít Windows rendszeren, például az ASP.NET-et vagy a Node.js-t. Az előre konfigurált Windows-környezet zárolja az operációs rendszert a következőből:

  • Rendszergazda hozzáférés.
  • Szoftvertelepítések.
  • A globális szerelvény-gyorsítótár módosítása.

További információkért lásd az operációs rendszer funkcióit Azure-alkalmazás szolgáltatásban.

Egyénileg konfigurált Windows-rendszerképet helyezhet üzembe a Visual Studióban az alkalmazás által igényelt operációsrendszer-módosítások elvégzéséhez. Így könnyen migrálható olyan helyszíni alkalmazás, amely egyéni operációs rendszert és szoftverkonfigurációt igényel. Ez az oktatóanyag bemutatja egy Windows betűkészlet-könyvtárba telepített egyéni betűkészletet használó ASP.NET-alkalmazás az App Service-be való áttelepítésének menetét. Egy Visual Studióból származó egyénileg konfigurált Windows-rendszerképet kell üzembe helyeznie az Azure Container Registryben, majd futtatnia az App Service-ben.

A Windows-tárolóban futó webalkalmazást jeleníti meg.

Előfeltételek

Az oktatóanyag elvégzéséhez:

Az alkalmazás helyi beállítása

A minta letöltése

Ebben a lépésben a helyi .NET-projektet állíthatja be.

A mintaprojekt tartalmaz egy egyszerű ASP.NET-alkalmazást, amely egy Windows betűkészlet-könyvtárba telepített egyéni betűkészletet használ. Nem szükséges betűtípusokat telepíteni. A minta azonban egy olyan alkalmazás példája, amely integrálva van az alapul szolgáló operációs rendszerrel. Az ilyen alkalmazások App Service-be történő áttelepítéséhez vagy újraírja a kódját az integráció eltávolításához, vagy áttelepíti egy egyéni Windows-tárolóban a jelenlegi formájában.

Betűkészlet telepítése

A Windows Explorerben navigáljon a custom-font-win-container-master/CustomFontSample elemhez, majd kattintson a jobb gombbal a FrederickatheGreat-Regular.ttf fájlra, és válassza az Install (Telepítés) lehetőséget.

Ez a betűkészlet nyilvánosan elérhető innen: Google Fonts.

Az alkalmazás futtatása

Nyissa meg a custom-font-win-container-master/CustomFontSample.sln fájlt a Visual Studióban.

Az alkalmazás hibakeresés nélküli futtatásához nyomja le a Ctrl+F5 billentyűkombinációt. Az alkalmazás megjelenik az alapértelmezett böngészőben.

Képernyőkép az alapértelmezett böngészőben megjelenő alkalmazásról.

Mivel az alkalmazás telepített betűtípust használ, az alkalmazás nem futtatható az App Service tesztkörnyezetében. Egy Windows-tároló használatával viszont üzembe helyezheti, mert a betűkészlet a Windows-tárolóban telepíthető.

Windows-tároló konfigurálása

A Megoldáskezelőben kattintson jobb gombbal a CustomFontSample projektre, és válassza az Add>Container Orchestration Support (Hozzáadás > Container Orchestration Support) lehetőséget.

Képernyőkép a Megoldáskezelő ablakról, amelyen a CustomFontSample projekt, a Hozzáadás és a Tárolóvezénylő támogatása menüpont van kiválasztva.

Válassza a Docker Compose>OK elemet.

A projekt most már windowsos tárolóban fut. A Dockerfile CustomFontSample projekthez a rendszer hozzáad egy docker-compose projektet a megoldáshoz.

Nyissa meg a Docker-fájlt a Megoldáskezelőből.

Egy támogatott szülőrendszerképet kell használnia. Módosítsa a szülőrendszerképet a FROM sor a következő kódra való lecserélésével:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019

A fájl végéhez adja hozzá a következő sort, majd mentse a fájlt:

RUN ${source:-obj/Docker/publish/InstallFont.ps1}

Az InstallFont.ps1 megtalálható a CustomFontSample projektben. Ez egy egyszerű szkript a betűkészlet telepítéséhez. A szkript összetettebb verzióját a PowerShell-galéria találja.

Feljegyzés

A Windows-tároló helyi teszteléséhez győződjön meg arról, hogy a Docker a helyi gépen van elindítva.

Közzététel az Azure Container Registryben

Az Azure Container Registry képes tárolni a rendszerképeket a tárolók üzembe helyezéséhez. Az App Service-t az Azure Container Registryben üzemeltetett rendszerképek használatára konfigurálhatja.

Közzétételi varázsló megnyitása

A Megoldáskezelőben kattintson jobb gombbal a CustomFontSample projektre, majd válassza a Publish (Közzététel) lehetőséget.

Képernyőkép Megoldáskezelő a CustomFontSample projektről, és a Kijelölt Közzététel.

Beállításjegyzék létrehozása és közzététele

A közzétételi varázslóban válassza a Container Registry>Create New Azure Container Registry>Publish (Container Registry > Új Azure Container Registry létrehozása > Közzététel) lehetőséget.

Képernyőkép a közzétételi varázslóról, amelyen a Container Registry, az Új Azure Container Registry létrehozása és a Kijelölt Közzététel gomb látható.

Bejelentkezés az Azure-fiók használatával

A Create a new Azure Container Registry (Új Azure Container Registry létrehozása) párbeszédpanelen válassza az Add an account (Fiók hozzáadása) gombot, majd jelentkezzen be az Azure-előfizetésébe. Ha már korábban bejelentkezett, válassza ki a kívánt előfizetést tartalmazó fiókot a legördülő listából.

Bejelentkezés az Azure-ba.

A beállításjegyzék konfigurálása

Konfigurálja az új Container Registryt a következő táblázatban javasolt értékek alapján. Miután végzett, válassza a Létrehozás lehetőséget.

Beállítás Ajánlott érték További információkért
DNS-előtag Megtarthatja a beállításjegyzék létrehozott nevét, vagy módosíthatja egy másik egyedi névre.
Erőforráscsoport Válassza az Új lehetőséget, írja be a myResourceGroup parancsot, majd kattintson az OK gombra.
Termékváltozat Alap Árképzési szintek
Beállításjegyzékbeli hely Nyugat-Európa

Konfigurálja az Azure Container Registryt.

Megnyílik egy terminálablak, és megjeleníti a rendszerkép üzembe helyezésének folyamatát. Várjon, amíg az üzembe helyezés befejeződik.

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure Portalra.

Webalkalmazás létrehozása

A bal oldali menüben válassza az Erőforrás létrehozása>Web>Web App for Containers lehetőséget.

Az alkalmazás alapjainak konfigurálása

Az Alapszintű beállítások lapon konfigurálja a beállításokat az alábbi táblázat szerint, majd válassza a Tovább: Docker lehetőséget.

Beállítás Ajánlott érték További információkért
Előfizetés Győződjön meg arról, hogy a megfelelő előfizetés van kiválasztva.
Erőforráscsoport Válassza az Új létrehozása lehetőséget, írja be a myResourceGroup parancsot, majd kattintson az OK gombra.
Név Írjon be egy egyedi nevet. A webalkalmazás URL-címe https://<app-name>.azurewebsites.net, amelyben az <app-name> az alkalmazás neve.
Közzététel Docker-tároló
Operációs rendszer Windows
Régió Nyugat-Európa
Windows-csomag Válassza az Új létrehozása lehetőséget, írja be a myAppServicePlan parancsot, majd kattintson az OK gombra.

Az Alapismeretek lapnak így kell kinéznie:

A webalkalmazás konfigurálásához használt Alapismeretek lap megjelenítése.

Windows-tároló konfigurálása

A Docker lapon konfigurálja az egyéni Windows-tárolót az alábbi táblázatban látható módon, és válassza a Véleményezés + létrehozás lehetőséget.

Beállítás Ajánlott érték
Kép forrása Azure Container Register
Registry Válassza ki a korábban létrehozott beállításjegyzéket.
Rendszerkép customfontsample
Tag legújabb

Alkalmazás létrehozásának befejezése

Válassza a Létrehozás lehetőséget , és várja meg, amíg az Azure létrehozza a szükséges erőforrásokat.

A webalkalmazás kikeresése

Értesítés jelenik meg, ha az Azure befejezte a művelet végrehajtását.

Azt mutatja, hogy az Azure-művelet befejeződött.

  1. Válassza az Erőforrás megnyitása lehetőséget.

  2. Az alkalmazásoldalon válassza az URL-cím alatti hivatkozást.

Egy új böngészőlapon a következő oldal jelenik meg:

Megjeleníti a webalkalmazás új böngészőlapját.

Várjon néhány percet, és próbálkozzon újra, amíg meg nem jelenik a kezdőlap a várt, gyönyörű betűtípussal:

Megjeleníti a kezdőlapot a beállított betűtípussal.

Gratulálunk! Áttelepített egy ASP.NET-alkalmazást az Azure App Service szolgáltatásba egy Windows-tárolóban.

A tároló rendszerindítási naplóinak megtekintése

A Windows-tároló betöltése eltarthat egy ideig. Az előrehaladás megtekintéséhez lépjen az alábbi URL-címre az alkalmazás nevének> az alkalmazás nevére való lecserélésével<.

https://<app-name>.scm.azurewebsites.net/api/logstream

A streamelt naplók a következőképpen néznek ki:

14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully

Azure-alkalmazás szolgáltatás a Docker tárolótechnológiát használja a beépített képek és az egyéni rendszerképek üzemeltetéséhez. A beépített rendszerképek listájának megtekintéséhez futtassa az "az webapp list-runtimes --os linux" Azure CLI-parancsot. Ha ezek a rendszerképek nem felelnek meg az igényeinek, egyéni rendszerképeket hozhat létre és helyezhet üzembe.

Feljegyzés

A tárolónak x86-x64 architektúrát kell céloznia, az ARM64 nem támogatott.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Egyéni Docker-rendszerkép leküldése az Azure Container Registrybe
  • Az egyéni rendszerkép üzembe helyezése az App Service-ben
  • Környezeti változók konfigurálása
  • Rendszerkép lekérése az App Service-be felügyelt identitás használatával
  • Diagnosztikai naplók elérése
  • CI/CD engedélyezése az Azure Container Registryből az App Service-be
  • Csatlakozás a tárolóhoz SSH használatával

Az oktatóanyag elvégzése kis díjat von maga után az Azure-fiókban a tárolóregisztrációs adatbázisért, és egy hónapnál hosszabb ideig több költséggel jár a tároló üzemeltetése.

A kezdeti környezet beállítása

Ehhez az oktatóanyaghoz az Azure CLI 2.0.80-s vagy újabb verziója szükséges. Ha Az Azure Cloud Shellt használja, a legújabb verzió már telepítve van.

  • Telepítse a Dockert, amelyet Docker-rendszerképek létrehozásához használ. A Docker telepítéséhez szükség lehet a számítógép újraindítására.

A Docker telepítése után nyisson meg egy terminálablakot, és ellenőrizze, hogy telepítve van-e a docker:

docker --version

A mintaalkalmazás klónozása vagy letöltése

Ehhez az oktatóanyaghoz a git-klónon vagy a letöltésen keresztül szerezheti be a mintát.

Klónozás gittel

Klónozza a mintaadattárat:

git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input

Győződjön meg arról, hogy az --config core.autocrlf=input argumentumot a Linux-tárolóban használt fájlok megfelelő sorvégződéseinek garantálásához adja meg:

Ezután lépjen a mappára:

cd docker-django-webapp-linux

Letöltés a GitHubról

Git-klón használata helyett látogasson el https://github.com/Azure-Samples/docker-django-webapp-linux, válassza a Klónozás lehetőséget, majd válassza a ZIP letöltése lehetőséget.

Csomagolja ki a ZIP-fájlt egy docker-django-webapp-linux nevű mappába.

Ezután nyisson meg egy terminálablakot adocker-django-webapp-linux mappában.

(Nem kötelező) A Docker-fájl vizsgálata

A Dockerfile nevű mintában található fájl, amely leírja a Docker-rendszerképet, és konfigurációs utasításokat tartalmaz:

FROM tiangolo/uwsgi-nginx-flask:python3.6

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/

# ssh
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
        && apt-get install -y --no-install-recommends dialog \
        && apt-get update \
 && apt-get install -y --no-install-recommends openssh-server \
 && echo "$SSH_PASSWD" | chpasswd 

COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/

RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000 2222

#CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"]
ENTRYPOINT ["init.sh"]
  • Az első parancscsoport telepíti az alkalmazás követelményeit a környezetben.
  • A parancsok második csoportja létrehoz egy SSH-kiszolgálót a tároló és a gazdagép közötti biztonságos kommunikációhoz.
  • Az utolsó sor ENTRYPOINT ["init.sh"]meghívja init.sh az SSH-szolgáltatást és a Python-kiszolgálót.

A rendszerkép helyi létrehozása és tesztelése

Feljegyzés

A Docker Hub kvótákkal rendelkezik az IP-címenkénti névtelen lekérések számával és a hitelesített lekérések ingyenes felhasználónkénti számával kapcsolatban (lásd az adatátvitelt). Ha azt tapasztalja, hogy a Docker Hubról érkező lekérések korlátozottak, próbálja meg docker login , ha még nem jelentkezett be.

  1. Futtassa a következő parancsot a rendszerkép létrehozásához:

    docker build --tag appsvc-tutorial-custom-image .
    
  2. A build működésének tesztelése a Docker-tároló helyi futtatásával:

    docker run -it -p 8000:8000 appsvc-tutorial-custom-image
    

    Ez a docker run parancs megadja a portot az -p argumentummal, majd a kép nevét. -it lehetővé teszi, hogy állítsa le a Ctrl+C.

    Tipp.

    Ha Windows rendszeren fut, és látja a hibát, standard_init_linux.go:211: az exec felhasználói folyamat "nem tartalmaz ilyen fájlt vagy könyvtárat", a init.sh fájl a várt LF-végződések helyett CR-LF sorvégződéseket tartalmaz. Ez a hiba akkor fordul elő, ha a gittel klónozta a mintaadattárat, de nem használta a paramétert --config core.autocrlf=input . Ebben az esetben klónozza újra az adattárat a "--config" argumentummal. Akkor is megjelenhet a hiba, ha init.sh szerkesztette, és CRLF-végződésekkel mentette. Ebben az esetben mentse újra a fájlt csak LF végződésekkel.

  3. Tallózással ellenőrizheti, hogy http://localhost:8000 a webalkalmazás és a tároló megfelelően működik-e.

    Tesztelje a webalkalmazást helyileg.

I. Felhasználó által hozzárendelt felügyelt identitás létrehozása

Az App Service egy alapértelmezett felügyelt identitást vagy egy felhasználó által hozzárendelt felügyelt identitást használhat a tárolóregisztrációs adatbázissal való hitelesítéshez. Ebben az oktatóanyagban egy felhasználó által hozzárendelt felügyelt identitást fog használni.

  1. Futtassa az az group create parancsot egy erőforráscsoport létrehozásához:

    az group create --name msdocs-custom-container-tutorial --location westeurope
    

    Az értéket úgy módosíthatja --location , hogy egy Önhöz közeli régiót adjon meg.

  2. Felügyelt identitás létrehozása az erőforráscsoportban.

    az identity create --name myID --resource-group msdocs-custom-container-tutorial
    

II. Container Registry létrehozása

  1. Hozzon létre egy tárolóregisztrációs adatbázist a az acr create paranccsal, és cserélje le <registry-name> a beállításjegyzék egyedi nevére. A névnek csak betűket és számokat kell tartalmaznia, és minden Azure-ban egyedinek kell lennie.

    az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled true
    

    A --admin-enabled paraméter lehetővé teszi a rendszerképek leküldését a beállításjegyzékbe rendszergazdai hitelesítő adatok készletével.

  2. Kérje le a rendszergazdai hitelesítő adatokat a az acr show parancs futtatásával:

    az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
    

    A parancs JSON-kimenete két jelszót biztosít a beállításjegyzék felhasználóneve mellett.

III. A mintarendszerkép leküldése az Azure Container Registrybe

Ebben a szakaszban leküldi a rendszerképet az Azure Container Registrybe, amelyet az App Service később fog használni.

  1. A mintarendszerképet tartalmazó helyi terminálról a docker login parancs használatával jelentkezzen be a tárolóregisztrációs adatbázisba:

    docker login <registry-name>.azurecr.io --username <registry-username>
    

    Cserélje le és <registry-username> cserélje le <registry-name> az előző lépések értékeit. Amikor a rendszer kéri, írja be az előző lépés egyik jelszavát.

    A szakasz többi lépésében ugyanazt a beállításjegyzéknevet használja.

  2. Ha a bejelentkezés sikeres, címkézze fel a helyi Docker-rendszerképet a beállításjegyzékbe:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  3. docker push A parancs használatával küldje le a rendszerképet a beállításjegyzékbe:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    A rendszerkép első feltöltése eltarthat néhány percig, mert tartalmazza az alaprendszerképet. A későbbi feltöltések általában gyorsabbak.

    Várakozás közben elvégezheti a következő szakaszban leírt lépéseket az App Service beállításjegyzékből való üzembe helyezésének konfigurálásához.

IV. Felügyelt identitás engedélyezése a beállításjegyzékhez

A létrehozott felügyelt identitás még nem rendelkezik engedéllyel a tárolóregisztrációs adatbázisból való lekéréshez. Ebben a lépésben engedélyezi az engedélyezést.

  1. Kérje le a felügyelt identitás egyszerű azonosítóját:

    principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
    
  2. Kérje le a tárolóregisztrációs adatbázis erőforrás-azonosítóját:

    registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)
    
  3. Adjon engedélyt a felügyelt identitásnak a tárolóregisztrációs adatbázis eléréséhez:

    az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"
    

    További információ ezekről az engedélyekről: Mi az Azure szerepköralapú hozzáférés-vezérlése?

V. A webapp létrehozása

  1. App Service-csomag létrehozása a az appservice plan create következő paranccsal:

    az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
    

    Az App Service-csomagok a webalkalmazást üzemeltető virtuális gépnek felelnek meg. Alapértelmezés szerint az előző parancs egy olcsó B1 tarifacsomagot használ, amely az első hónapban ingyenes. A réteget a --sku paraméterrel szabályozhatja.

  2. Hozza létre a webalkalmazást a az webapp create következő paranccsal:

    az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Cserélje le <app-name> a webalkalmazás nevét, amelynek minden Azure-ban egyedinek kell lennie. Cserélje le <registry-name> az előző szakaszban szereplő beállításjegyzék nevére is.

    Tipp.

    A webalkalmazás tárolóbeállításai bármikor lekérhetők a paranccsal az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. A rendszerkép a tulajdonságban DOCKER_CUSTOM_IMAGE_NAMEvan megadva. Ha a webalkalmazás azure DevOps- vagy Azure Resource Manager-sablonokkal van üzembe helyezve, a rendszerkép egy nevesített LinuxFxVersiontulajdonságban is megjelenhet. Mindkét tulajdonság ugyanazt a célt szolgálja. Ha mindkettő megtalálható a webalkalmazás konfigurációjában, LinuxFxVersion elsőbbséget élvez.

VI. A webalkalmazás konfigurálása

Ebben a lépésben az alábbiak szerint konfigurálja a webalkalmazást:

  • A mintatároló a 8000-s porton figyeli a webes kérelmeket, és úgy konfigurálja az alkalmazást, hogy kéréseket küldjön a 8000-s portra.
  • Kérje meg az alkalmazást, hogy a felügyelt identitással kérje le a lemezképeket a tárolóregisztrációs adatbázisból.
  • Konfigurálja a folyamatos üzembe helyezést a tárolóregisztrációs adatbázisból (vagy minden rendszerkép-leküldés a beállításjegyzékbe aktiválja az alkalmazást az új rendszerkép lekéréséhez). Erre a részre nincs szükség ahhoz, hogy a webalkalmazás lekérje a tárolóregisztrációs adatbázisból, de tudathatja a webalkalmazással, hogy mikor küld le egy új lemezképet a beállításjegyzékbe. Nélküle manuálisan kell aktiválnia egy rendszerkép-lekérést a webalkalmazás újraindításával.
  1. A az webapp config appsettings set környezeti változót az WEBSITES_PORT alkalmazáskód által várt módon állíthatja be:

    az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000
    

    Cserélje le <app-name> az előző lépésben használt névre.

    Erről a környezeti változóról további információt a minta GitHub-adattárában talál.

  2. Engedélyezze a felhasználó által hozzárendelt felügyelt identitást a webalkalmazásban a az webapp identity assign következő paranccsal:

    id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv)
    az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $id
    

    Cserélje le <app-name> az előző lépésben használt névre.

  3. Konfigurálja az alkalmazást úgy, hogy felügyelt identitások használatával lekérje az Azure Container Registryből.

    appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv)
    az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=True
    

    Cserélje le <app-name> az előző lépésben használt névre.

  4. Állítsa be azt az ügyfél-azonosítót, amelyet a webalkalmazás az Azure Container Registryből való lekéréshez használ. Erre a lépésre nincs szükség, ha a rendszer által hozzárendelt felügyelt identitást használja.

    clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv)
    az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientId
    
  5. Engedélyezze a CI/CD-t az App Service-ben.

    cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)
    

    CI_CD_URL Az App Service által létrehozott URL-cím. A beállításjegyzéknek ezt az URL-címet kell használnia, hogy értesítse az App Service-t a rendszerkép leküldéséről. Valójában nem hozza létre a webhookot.

  6. Hozzon létre egy webhookot a tárolóregisztrációs adatbázisban az utolsó lépésben kapott CI_CD_URL használatával.

    az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
    
  7. Annak ellenőrzéséhez, hogy a webhook megfelelően van-e konfigurálva, pingelje a webhookot, és ellenőrizze, hogy kap-e 200 OK-választ.

    eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv)
    az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"
    

    Tipp.

    A webhook összes eseményével kapcsolatos összes információ megtekintéséhez távolítsa el a paramétert --query .

    Ha a tárolónaplót streameli, a webhook pingelése után a következő üzenetnek kell megjelennie: Starting container for sitemivel a webhook aktiválja az alkalmazást az újraindításhoz.

VII. A webalkalmazás kikeresése

Az alkalmazás teszteléséhez keresse meg https://<app-name>.azurewebsites.net<app-name> a webalkalmazás nevét.

Az első hozzáféréskor eltarthat egy ideig, mire az alkalmazás válaszol, mert az App Service-nek le kell húznia a teljes lemezképet a beállításjegyzékből. Ha a böngésző túllépi az időkorlátot, frissítse az oldalt. A kezdeti rendszerkép lekérése után a későbbi tesztek sokkal gyorsabban fognak futni.

Képernyőkép a böngészőről, amelyen az Azure-ban sikeresen futó webalkalmazás látható.

VIII. Diagnosztikai naplók elérése

Miközben arra vár, hogy az App Service lekérje a képet, hasznos lehet pontosan látni, hogy az App Service mit csinál a tárolónaplók terminálba való streamelésével.

  1. A tárolónaplózás bekapcsolása:

    az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
    
  2. A naplóstream engedélyezése:

    az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
    

    Ha nem jelennek meg azonnal a konzolnaplófájlok, ellenőrizze ismét 30 másodperc múlva.

    A naplófájlokat a böngészőből is megtekintheti a következő címen: https://<app-name>.scm.azurewebsites.net/api/logs/docker.

  3. A Ctrl+C billentyűparanccsal bármikor leállíthatja a naplóstreamelést.

IX. Az alkalmazáskód módosítása és ismételt üzembe helyezés

Ebben a szakaszban módosítja a webalkalmazás kódját, újraépíti a lemezképet, majd leküldi azt a tárolóregisztrációs adatbázisba. Az App Service ezután automatikusan lekéri a frissített lemezképet a beállításjegyzékből a futó webalkalmazás frissítéséhez.

  1. A helyi docker-django-webapp-linux mappában nyissa meg a fájlt app/templates/app/index.html.

  2. Módosítsa az első HTML-elemet a következő kódnak megfelelőre.

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a>
        </div>
      </div>
    </nav>
    
  3. Mentse a módosításokat.

  4. Váltson a docker-django-webapp-linux mappára, és építse újra a képet:

    docker build --tag appsvc-tutorial-custom-image .
    
  5. Frissítse a kép címkéjét a legújabbra:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Cserélje le a <registry-name> elemet a tárolójegyzék nevére.

  6. A rendszerkép leküldése a beállításjegyzékbe:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. Amikor a képküldés befejeződött, a webhook értesíti az App Service-t a leküldésről, és az App Service megpróbálja lekérni a frissített képet. Várjon néhány percet, majd ellenőrizze, hogy a frissítés üzembe lett-e helyezve https://<app-name>.azurewebsites.net.

X. Csatlakozás a tárolóhoz SSH használatával

Az SSH lehetővé teszi a tároló és az ügyfél közötti biztonságos kommunikációt. A tárolóhoz való SSH-kapcsolat engedélyezéséhez az egyéni rendszerképet konfigurálni kell. Amikor a tároló fut, megnyithat egy SSH-kapcsolatot.

A tároló konfigurálása SSH-hoz

Az oktatóanyagban használt mintaalkalmazás már rendelkezik a szükséges konfigurációval a Dockerfile-ban, amely telepíti az SSH-kiszolgálót, és beállítja a bejelentkezési hitelesítő adatokat is. Ez a szakasz csak tájékoztató jellegű. A tárolóhoz való csatlakozáshoz ugorjon a következő szakaszra.

ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
        && apt-get install -y --no-install-recommends dialog \
        && apt-get update \
  && apt-get install -y --no-install-recommends openssh-server \
  && echo "$SSH_PASSWD" | chpasswd 

Feljegyzés

Ez a konfiguráció nem teszi lehetővé a tároló külső kapcsolatait. Az SSH csak a Kudu/SCM webhelyen keresztül érhető el. A Kudu/SCM-webhely hitelesítése az Azure-fiókjával történik. root:Docker! nem lehet módosítani az SSH-t. Az SCM/KUDU az Azure Portal hitelesítő adatait fogja használni. Ha ezt az értéket módosítja, az SSH használatakor hiba lép fel.

A Dockerfile a sshd_config fájlt is átmásolja az /etc/ssh/ mappába, és elérhetővé teszi a 2222-s portot a tárolón:

COPY sshd_config /etc/ssh/

# ...

EXPOSE 8000 2222

A 2222-s port egy belső port, amelyet csak a magánhálózat hídhálózatán belüli tárolók érhetnek el.

Végül a init.sh bejegyzésszkript elindítja az SSH-kiszolgálót.

#!/bin/bash
service ssh start

A tároló SSH-kapcsolatának megnyitása

  1. Keresse meg és https://<app-name>.scm.azurewebsites.net/webssh/host jelentkezzen be az Azure-fiókjával. A <app-name> rész helyére a webalkalmazás nevét írja be.

  2. Amikor bejelentkezik, a rendszer átirányítja a webalkalmazás információs lapjára. Válassza az SSH-t a lap tetején a rendszerhéj megnyitásához és a parancsok használatához.

    A parancs használatával top például megvizsgálhatja a benne futó folyamatokat.

XI. Az erőforrások eltávolítása

A cikkben létrehozott erőforrások folyamatos költségekkel járhatnak. Az erőforrások törléséhez csak az őket tartalmazó erőforráscsoportot kell törölnie:

az group delete --name msdocs-custom-container-tutorial

Következő lépések

Az alábbiak elvégzését ismerte meg:

  • Egyéni rendszerkép üzembe helyezése privát tárolóregisztrációs adatbázisban
  • Üzembe helyezés és az egyéni rendszerkép az App Service-ben
  • A rendszerkép frissítése és ismételt üzembe helyezése
  • Diagnosztikai naplók elérése
  • Csatlakozás a tárolóhoz SSH használatával
  • Egyéni Docker-rendszerkép leküldése az Azure Container Registrybe
  • Az egyéni rendszerkép üzembe helyezése az App Service-ben
  • Környezeti változók konfigurálása
  • Rendszerkép lekérése az App Service-be felügyelt identitás használatával
  • Diagnosztikai naplók elérése
  • CI/CD engedélyezése az Azure Container Registryből az App Service-be
  • Csatlakozás a tárolóhoz SSH használatával

A következő oktatóanyagban megtudhatja, hogyan védheti meg az alkalmazást egy egyéni tartománnyal és tanúsítvánnyal.

Vagy tekintse meg a többi erőforrást is: