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.
Előfeltételek
Az oktatóanyag elvégzéséhez:
- Regisztráció Docker Hub-fiókra
- Windows rendszerhez készült Docker telepítése.
- A Docker átváltása Windows-tárolók futtatására.
- Telepítse a Visual Studio 2022-t a ASP.NET és webfejlesztési és Azure-fejlesztési számítási feladatokkal. Ha már telepítette a Visual Studio 2022-t:
- Telepítse a legújabb frissítéseket a Visual Studióban az Frissítések súgójának>kiválasztásával.
- Adja hozzá a számítási feladatokat a Visual Studióban az Eszközök>lekérése eszközök és szolgáltatások lehetőség kiválasztásával.
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.
- Töltse le a mintaprojektet.
- Bontsa ki (bontsa ki) a custom-font-win-container-master.zip fájlt.
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.
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.
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.
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.
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.
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 |
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:
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.
Válassza az Erőforrás megnyitása lehetőséget.
Az alkalmazásoldalon válassza az URL-cím alatti hivatkozást.
Egy új böngészőlapon a következő oldal jelenik meg:
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:
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.
- Rendelkezik aktív előfizetéssel rendelkező Azure-fiókkal. Fiók ingyenes létrehozása.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, 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.
- 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ívjainit.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.
Futtassa a következő parancsot a rendszerkép létrehozásához:
docker build --tag appsvc-tutorial-custom-image .
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 aCtrl+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.Tallózással ellenőrizheti, hogy
http://localhost:8000
a webalkalmazás és a tároló megfelelően működik-e.
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.
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.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
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.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.
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.
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
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.
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)
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)
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
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.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ágbanDOCKER_CUSTOM_IMAGE_NAME
van megadva. Ha a webalkalmazás azure DevOps- vagy Azure Resource Manager-sablonokkal van üzembe helyezve, a rendszerkép egy nevesítettLinuxFxVersion
tulajdonsá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.
A
az webapp config appsettings set
környezeti változót azWEBSITES_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.
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.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.Á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
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.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
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 site
mivel 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.
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.
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
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
.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.
A helyi docker-django-webapp-linux mappában nyissa meg a fájlt app/templates/app/index.html.
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>
Mentse a módosításokat.
Váltson a docker-django-webapp-linux mappára, és építse újra a képet:
docker build --tag appsvc-tutorial-custom-image .
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.A rendszerkép leküldése a beállításjegyzékbe:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
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
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.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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: