Egyéni szoftverek migrálása Azure-alkalmazás szolgáltatásba egyéni tároló használatával
Azure-alkalmazás szolgáltatás előre definiált alkalmazásvermeket biztosít, például ASP.NET vagy Node.js Windows 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 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. 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.
Előfeltételek
Az oktatóanyag elvégzéséhez:
- Regisztráljon Egy Docker Hub-fiókra.
- Windows rendszerhez készült Docker telepítése.
- Konfigurálja a Dockert 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 a Frissítések keresése 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 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 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 válassza 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 konfigurálható úgy, hogy az Azure Container Registryben tárolt rendszerképeket használjon.
A 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.
A 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 Azure-fiókkal
Az új Azure Container Registry létrehozása párbeszédpanelen válassza a Fiók hozzáadása lehetőséget, majd jelentkezzen be az Azure-előfizetésbe. 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 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 parancsot, majd kattintson az OK gombra. |
Termékváltozat | Alapszintű. További információ: Tarifacsomagok. |
Beállításjegyzékbeli hely | Nyugat-Európa |
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
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 Alapok lapon konfigurálja a beállításokat az alábbi táblázat szerint. Ezután válassza a Tovább: Docker lehetőséget.
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 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 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, 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 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
Ha az üzembe helyezés befejeződött, megjelenik egy értesítési mező.
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 kapja a kezdőlapot a várt 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ó 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
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 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 az Azure 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.
- 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 a 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 biztosításához adja meg.
Ezután lépjen a mappára:
cd docker-django-webapp-linux
Letöltés a GitHubról
A git-klón használata helyett felkeresheti https://github.com/Azure-Samples/docker-django-webapp-linux és kiválaszthatja a Kód>helyi>letöltési ZIP-kódjá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
Ez a dockerfile nevű mintafájl. 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í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 a névtelen lekérések IP-címenkénti számáról és a hitelesített lekérések számáról ingyenes felhasználónként. 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 az argumentummal rendelkező-p
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 "nem tartalmaz ilyen fájlt vagy könyvtárat", 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.Tallózással
http://localhost:8000
ellenőrizheti, hogy 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 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.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.
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ő szakasz 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 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 adhatja meg.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á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:
- 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.
- 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 (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.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 egy
Starting container for site
üzenetnek kell megjelennie, mert 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 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.
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
.Ha bármikor le szeretné állítani a naplóstreamelést, válassza a Ctrl+C billentyűkombinációt.
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 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.A rendszerkép leküldése a beállításjegyzékbe:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
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 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 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 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!
SSH használata esetén nem szabad módosítani. 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
Az SSH-kapcsolat megnyitása a tárolóval
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 az alkalmazásban futó folyamatokat.
KSZI. 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.
- 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 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 az Azure Container Registryből az App Service-be.
- Csatlakozzon a tárolóhoz SSH használatával.
A következő oktatóanyagban megtudhatja, hogyan biztosíthatja az alkalmazás biztonságát egy egyéni tartománnyal és tanúsítvánnyal.
Vagy tekintse meg a többi erőforrást is: