Megosztás a következőn keresztül:


Egyéni szoftverek migrálása az Azure App Service-be egyéni tároló használatával

Az Azure App Service előre definiált alkalmazásvermeket biztosít, például ASP.NET vagy Node.jsWindows rendszeren. Ezek az alkalmazásvermek IIS-en futnak. Az előre konfigurált Windows-környezet zárolja az operációs rendszert a következőből:

  • Rendszergazdai 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 App Service operációsrendszer-funkcióit.

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. Ez megkönnyíti egy olyan helyszíni alkalmazás migrálását, 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énileg konfigurált Windows-rendszerképet telepít a Visual Studióból az Azure Container Registrybe, majd futtatja az App Service-ben.

Képernyőkép a Windows-tárolóban futó webalkalmazásról.

Előfeltételek

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 egy egyszerű ASP.NET alkalmazást tartalmaz, amely a Windows betűtípustárba telepített egyéni betűtípust használja. 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 Intézőben lépjen a custom-font-win-container-master/CustomFontSample elemre, kattintson a jobb gombbal a FrederickatheGreat-Regular.ttf, és válassza a 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 válassza 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. Ezt azonban windowsos tárolóval is üzembe helyezheti, mert a betűtípust a Windows-tárolóban telepítheti.

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 CustomFontSample projektről a Megoldáskezelőben. A Hozzáadás és a Tároló vezénylő támogatása menüpont ki van emelve.

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 Dockerfile-t a Megoldáskezelőben.

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

Adja hozzá a következő sort a fájl végéhez, és 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. Konfigurálhatja az App Service-t a Container Registryben tárolt rendszerképek használatára.

A Közzététel ablak megnyitása

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

Képernyőkép a CustomFontSample projektről a Megoldáskezelőben. A Közzététel menüelem ki van emelve.

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

  1. A Közzététel ablakban válassza az Azure-t, majd a Tovább lehetőséget.

  2. Válassza az Azure Container Registryt, majd a Tovább gombot.

  3. Válassza ki azt az előfizetést, amelyben közzé szeretné tenni a beállításjegyzéket, majd válassza az Új létrehozása lehetőséget.

Képernyőkép a Közzététel ablakról. Az Új létrehozása gomb ki van emelve.

Bejelentkezés Azure-fiókkal

Az Azure Container Registry ablakban válassza a Fiók hozzáadása lehetőséget, majd jelentkezzen be az Azure-előfizetésbe. Ha már bejelentkezett, válassza ki a kívánt előfizetést tartalmazó fiókot a legördülő listából.

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

Konfigurálja az új tárolóregisztrációs adatbázist az alábbi táblázatban javasolt értékekkel útmutatóként. Miután végzett, válassza a Létrehozás lehetőséget.

Beállítás Ajánlott érték
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 nevet, majd kattintson az OK gombra.
Termékváltozat Alapszintű. További információ: Tarifacsomagok.
Beállításjegyzékbeli hely Nyugat-Európa

Képernyőkép az Azure Container Registry ablakáról.

Válassza ki a Befejezésopciót.

Megnyílik egy terminálablak, amely 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

Válassza az Erőforrás létrehozása, majd a WebAlkalmazás területen a Létrehozás 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 útmutatóként való használatával.

Beállítás Ajánlott érték
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 nevet, majd kattintson az OK gombra.
Név Adjon meg 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 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 az alábbihoz hasonlóan kell kinéznie:

Képernyőkép a webalkalmazás konfigurálásához használt Alapismeretek lapról.

A Windows-tároló konfigurálása

A Tároló lapon konfigurálja az egyéni Windows-tárolót az alábbi táblázatban látható módon, majd 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 Registry
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

Ha az üzembe helyezés befejeződött, megjelenik egy értesítési üzenet:

Képernyőkép az értesítési üzenetről.

  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:

Képernyőkép a webalkalmazás új böngészőlapjáról.

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

Képernyőkép a kezdőlapról a beállított betűtípussal.

Gratulálunk! Migrált egy ASP.NET alkalmazást az App Service-be egy Windows-tárolóban.

A tároló indí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 a következő URL-címre. (Cserélje le <az alkalmazás nevét> az alkalmazás nevére.)

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

Az Azure App Service Docker-tárolótechnológiát használ a beépített rendszerképek és az egyéni rendszerképek üzemeltetéséhez. A beépített rendszerképek listájának megtekintéséhez futtassa az Azure CLI-parancsot, az webapp list-runtimes --os linux. 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 az x86-64 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.
  • Helyezze üzembe az egyéni rendszerképet az App Service-ben.
  • Környezeti változók konfigurálása.
  • A rendszerkép lekérése az App Service-be felügyelt identitás használatával.
  • Diagnosztikai naplók elérése.
  • Engedélyezze a CI/CD-t a Container Registryből az App Service-be.
  • Csatlakozzon a tárolóhoz SSH használatával.

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

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

Az oktatóanyaghoz tartozó mintát a Git klónozásával vagy letöltésével szerezheti be.

Az adattár klónozása a Git Bash használatával

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 biztosításához adja meg.

Ezután lépjen a mappára:

cd docker-django-webapp-linux

A ZIP letöltése a GitHubról

A Git-klón használata helyett válassza a https://github.com/Azure-Samples/docker-django-webapp-linuxKód>helyi>letöltése ZIP-t.

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

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

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

Az alábbiakban a Dockerfile nevű mintafájlt követjük. Leírja a Docker-lemezké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, amely továbbfejlesztett biztonsági kommunikációt biztosít a tároló és a gazdagép között.
  • 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ákat ír elő a névtelen lekérések IP-címenkénti számára és az ingyenes felhasználónkénti hitelesített lekérések számára. Ha azt tapasztalja, hogy a Docker Hubról érkező lekérések korlátozottak, próbálkozzon a futtatással docker login , ha még nincs bejelentkezve.

  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 docker run a parancs az argumentum használatával -p adja meg a portot, és tartalmazza a kép nevét. -it a Ctrl+C billentyűkombinációval állíthatja le.

    Tipp.

    Ha Windows rendszeren fut, és a *standard_init_linux.go:211: exec felhasználói folyamat "nincs ilyen fájl vagy könyvtár" hibaüzenet jelenik meg, a init.sh fájl a várt LF-végződések helyett CRLF-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 az --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 http://localhost:8000 ellenőrizheti, hogy a webalkalmazás és a tároló megfelelően működik-e.

    Képernyőkép a teszt eredményeiről.

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
    

Container Registry létrehozása

  1. Hozzon létre egy tárolóregisztrációs adatbázist az alábbi az acr create paranccsal. Cserélje le az <registry-name> elemet az adatbázis 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 használatával.

  2. Kérje le a rendszergazdai hitelesítő adatokat a az credential 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.

A mintakép leküldése a Tárolóregisztrációs adatbázisba

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

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

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

  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.

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 Az Azure szerepköralapú hozzáférés-vezérlése?

A webapp létrehozása

  1. Hozzon létre egy App Service-csomagot 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 adhatja meg.

  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. A névnek az 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.

A webalkalmazás konfigurálása

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

  • Konfigurálja az alkalmazást úgy, hogy kéréseket küldjön a 8000-s portra. A mintatároló a 8000-s porton figyeli a webes kéréseket.
  • Konfigurálja az alkalmazást úgy, hogy a felügyelt identitás használatával lekérje 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. (A beállításjegyzékbe való minden képküldés aktiválja az alkalmazást az új rendszerkép lekéréséhez.) Ez a lépés nem szükséges ahhoz, hogy a webalkalmazás lekérje a tárolóregisztrációs adatbázisból, de értesítést küldhet a webalkalmazásnak, ha egy új rendszerképet küld a beállításjegyzékbe. Ha nem hajtja végre ezt a lépést, manuálisan kell aktiválnia egy kép lekérését 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.

  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 a 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 a Container Registryből való lekéréshez használ. Ez a lépés nem szükséges, 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. Használja az utolsó lépésben kapott CI_CD_URL.

    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 egy Starting container for site üzenetnek kell megjelennie, mert a webhook aktiválja az alkalmazást az újraindításhoz.

A webalkalmazás kikeresése

Az alkalmazás teszteléséhez keresse meg a következőt https://<app-name>.azurewebsites.net: . A <app-name> rész helyére a webalkalmazás nevét írja be.

Amikor először próbál hozzáférni az alkalmazáshoz, eltarthat egy ideig, amíg 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őben futó webalkalmazásról.

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 megvizsgálhatja a következő lépéssel: .>

  3. Ha bármikor le szeretné állítani a naplóstreamelést, válassza a Ctrl+C billentyűkombinációt.

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. Nyissa meg a docker-django-webapp-linux mappát, é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 következőre latest:

    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. Ha a kép leküldése 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 a következő lépéssel https://<app-name>.azurewebsites.netellenőrizze, hogy a frissítés telepítve van-e.

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

Az SSH továbbfejlesztett biztonsági kommunikációt tesz lehetővé egy tároló és egy ügyfél között. A tárolóhoz való SSH-kapcsolat engedélyezéséhez konfigurálnia kell az egyéni rendszerképet. 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 dockerfile szükséges konfigurációjával, 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! SSH használata esetén nem kell módosítani. Az SCM/KUDU az Azure Portal hitelesítő adatait használja. 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

Az SSH-kapcsolat megnyitása a tárolóval

  1. Nyissa meg https://<app-name>.scm.azurewebsites.net/webssh/host és 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 az alkalmazásban futó folyamatokat.

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.
  • Helyezze üzembe az egyéni rendszerképet az App Service-ben.
  • Frissítse és telepítse újra a rendszerképet.
  • Diagnosztikai naplók elérése.
  • Csatlakozzon a tárolóhoz SSH használatával.
  • Egyéni Docker-rendszerkép leküldése a Container Registrybe.
  • Helyezze üzembe az egyéni rendszerképet az App Service-ben.
  • Környezeti változók konfigurálása.
  • A rendszerkép lekérése az App Service-be felügyelt identitás használatával.
  • Diagnosztikai naplók elérése.
  • Engedélyezze a CI/CD-t a Container Registryből az App Service-be.
  • Csatlakozzon a tárolóhoz SSH használatával.

Lépjen a következő oktatóanyagra:

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