Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure App Service poskytuje předdefinované zásobníky aplikací, jako jsou ASP.NET nebo Node.js, ve Windows. Tyto zásobníky aplikací běží ve službě IIS. Předkonfigurované prostředí Windows uzamkne operační systém z:
- Přístup ke správě.
- Instalace softwaru.
- Změny globální mezipaměti sestavení.
Další informace najdete v tématu Funkce operačního systému ve službě App Service.
Můžete nasadit vlastní nakonfigurovanou image Windows ze sady Visual Studio, abyste mohli provádět změny operačního systému, které vaše aplikace potřebuje. Díky tomu můžete snadno migrovat místní aplikaci, která vyžaduje vlastní konfiguraci operačního systému a softwaru. Tento kurz ukazuje, jak do služby App Service migrovat aplikaci ASP.NET, která využívá vlastní písma nainstalovaná v knihovně písem Windows. Nasadíte vlastní nakonfigurovanou image Windows ze sady Visual Studio do služby Azure Container Registry a pak ji spustíte ve službě App Service.
Požadavky
- Zaregistrujte si účet Docker Hubu.
- Nainstalovat Docker for Windows.
- Nakonfigurujte Docker pro spouštění kontejnerů Windows.
-
Nainstalujte Visual Studio 2022 s úlohami vývoje pro ASP.NET a web a vývoj pro Azure. Pokud už máte nainstalovanou sadu Visual Studio 2022:
- Nainstalujte nejnovější aktualizace v sadě Visual Studio výběrem možnosti Vyhledat aktualizace nápovědy>.
- Přidejte úlohy v sadě Visual Studio výběrem nástrojů Získat nástroje>a funkce.
Místní nastavení aplikace
Stažení ukázky
V tomto kroku nastavíte místní projekt .NET.
- Stáhněte si ukázkový projekt.
- Extrahujte (rozbalte) soubor custom-font-win-container-master.zip .
Ukázkový projekt obsahuje jednoduchou ASP.NET aplikaci, která používá vlastní písmo nainstalované v knihovně písem systému Windows. Písma není nutné instalovat. Ukázka je ale příkladem aplikace, která je integrovaná se základním operačním systémem. Pokud chcete takovou aplikaci migrovat do služby App Service, buď úpravou kódu odeberete tuto integraci, nebo ji migrujete tak jak je ve vlastním kontejneru Windows.
Instalace písma
V Průzkumníku Windows přejděte na custom-font-win-container-master/CustomFontSample, klikněte pravým tlačítkem na FrederickatheGreat-Regular.ttf a vyberte Nainstalovat.
Toto písmo je veřejně dostupné na webu Google Fonts.
Spustit aplikaci
Otevřete soubor custom-font-win-container-master/CustomFontSample.sln v sadě Visual Studio.
Pokud chcete aplikaci spustit bez ladění, vyberte Ctrl+F5 . Aplikace se zobrazí ve vašem výchozím prohlížeči.
Vzhledem k tomu, že aplikace používá nainstalované písmo, aplikace nemůže běžet v sandboxu služby App Service. Můžete ho ale nasadit pomocí kontejneru Windows, protože písmo můžete nainstalovat do kontejneru Windows.
Konfigurace kontejneru Windows
V Průzkumníku řešení klikněte pravým tlačítkem na projekt CustomFontSample a vyberte Přidat>Podpora orchestrace kontejnerů.
Vyberte Docker Compose>OK.
Váš projekt je teď nastavený tak, aby běžel v kontejneru Windows. Do projektu CustomFontSampleDockerfilea do řešení se přidá projekt docker-compose.
V Průzkumníku řešení otevřete soubor Dockerfile.
Je nutné použít podporovanou nadřazenou image. Nadřazenou image změníte tak, že řádek FROM nahradíte následujícím kódem:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Na konec souboru přidejte následující řádek a soubor uložte:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
InstallFont.ps1 najdete v projektu CustomFontSample. Jde o jednoduchý skript, který nainstaluje toto písmo. Složitější verzi skriptu najdete v Galerie prostředí PowerShell.
Poznámka:
Pokud chcete místně otestovat kontejner Windows, ujistěte se, že je Na místním počítači spuštěný Docker.
Publikování do služby Azure Container Registry
Služba Azure Container Registry uchovává vaše image pro nasazení kontejnerů. Službu App Service můžete nakonfigurovat tak, aby používala image hostované ve službě Container Registry.
Otevření okna Publikovat
V Průzkumníku řešení klikněte pravým tlačítkem na projekt CustomFontSample a vyberte Publikovat.
Vytvoření a publikování registru
V okně Publikovat vyberte Azure a pak vyberte Další.
Vyberte Azure Container Registry a pak vyberte Další.
Vyberte předplatné, do kterého chcete registr publikovat, a pak vyberte Vytvořit nový.
Přihlášení pomocí účtu Azure
V okně Azure Container Registry vyberte Přidat účet a pak se přihlaste ke svému předplatnému Azure. Pokud už jste přihlášení, vyberte v rozevíracím seznamu účet obsahující požadované předplatné.
Konfigurace registru
Nakonfigurujte nový registr kontejneru pomocí navrhovaných hodnot v následující tabulce jako vodítko. Po dokončení vyberte Vytvořit.
| Nastavení | Navrhovaná hodnota |
|---|---|
| Předpona DNS | Ponechejte vygenerovaný název registru nebo ho změňte na jiný jedinečný název. |
| Skupina zdrojů | Vyberte Nový, zadejte myResourceGroup a pak vyberte OK. |
| Skladová jednotka (SKU) | Basic. Další informace najdete v tématu Cenové úrovně. |
| Umístění registru | Západní Evropa |
Vyberte Dokončit.
Otevře se okno terminálu a zobrazí průběh nasazení image. Počkejte, až se nasazení dokončí.
Přihlášení k Azure
Přihlaste se k portálu Azure.
Vytvoření webové aplikace
Vyberte Vytvořit prostředek a pak v části Webová aplikace vyberte Vytvořit.
Základní informace o konfiguraci aplikací
Na kartě Základy nakonfigurujte nastavení pomocí následující tabulky jako vodítko.
| Nastavení | Navrhovaná hodnota |
|---|---|
| Předplatné | Ujistěte se, že je vybrané správné předplatné. |
| Skupina zdrojů | Vyberte Vytvořit nový, zadejte myResourceGroup a pak vyberte OK. |
| Název | Zadejte jedinečný název. Adresa URL webové aplikace je https://<app-name>.azurewebsites.net, kde <app-name> je název vaší aplikace. |
| Publikovat | Kontejner |
| Operační systém | Windows |
| Oblast | Západní Evropa |
| Plán Windows | Vyberte Vytvořit nový, zadejte myAppServicePlan a pak vyberte OK. |
Karta Základy by měla vypadat nějak takto:
Konfigurace kontejneru Windows
Na kartě Kontejner nakonfigurujte vlastní kontejner Windows, jak je znázorněno v následující tabulce, a pak vyberte Zkontrolovat a vytvořit.
| Nastavení | Navrhovaná hodnota |
|---|---|
| Zdroj obrázku | Azure Container Registry |
| Registr | Vyberte registr, který jste vytvořili dříve. |
| Obrázek | customfontsample |
| Tag | nejnovější |
Dokončení vytvoření aplikace
Vyberte Vytvořit a počkejte, až Azure vytvoří požadované prostředky.
Přechod na webovou aplikaci
Po dokončení nasazení se zobrazí zpráva s oznámením:
Vyberte Přejít k prostředku.
Na stránce aplikace vyberte odkaz pod adresou URL.
Na nové stránce prohlížeče se otevře následující stránka:
Počkejte několik minut a zkuste to znovu, dokud nedostanete domovskou stránku s písmem, které očekáváte:
Gratulujeme! Migrovali jste aplikaci ASP.NET do služby App Service v kontejneru Windows.
Zobrazení protokolů spuštění kontejneru
Načtení kontejneru Windows může nějakou dobu trvat. Pokud chcete zobrazit průběh, přejděte na následující adresu URL. (Nahraďte <název> aplikace názvem vaší aplikace.)
https://<app-name>.scm.azurewebsites.net/api/logstream
Streamované protokoly vypadají takto:
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 App Service používá technologii kontejneru Dockeru k hostování integrovaných imagí i vlastních imagí. Pokud chcete zobrazit seznam předdefinovaných imagí, spusťte příkaz Azure CLI , az webapp list-runtimes --os linux. Pokud tyto image nevyhovují vašim potřebám, můžete vytvořit a nasadit vlastní image.
Poznámka:
Kontejner by měl cílit na architekturu x86-64. ARM64 se nepodporuje.
V tomto kurzu se naučíte:
- Nasdílení vlastní image Dockeru do služby Azure Container Registry
- Nasaďte vlastní image do služby App Service.
- Nakonfigurujte proměnné prostředí.
- Stáhněte image do služby App Service pomocí spravované identity.
- Přístup k diagnostickým protokolům
- Povolte CI/CD ze služby Container Registry do služby App Service.
- Připojte se ke kontejneru pomocí SSH.
Dokončením tohoto kurzu se v účtu Azure pro registr kontejneru účtují malé poplatky a pokud kontejner hostujete déle než měsíc, může se vám účtovat více nákladů.
Nastavení počátečního prostředí
Tento kurz vyžaduje verzi 2.0.80 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
- Ujistěte se, že máte účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Nainstalujte Docker, který použijete k sestavení imagí Dockeru. Instalace Dockeru může vyžadovat restartování počítače.
Po instalaci Dockeru otevřete okno terminálu a ověřte, že je docker nainstalovaný:
docker --version
Klonování nebo stažení ukázkové aplikace
Ukázku pro tento kurz můžete získat prostřednictvím git cloneu nebo stažení.
Klonování úložiště pomocí Git Bashu
Naklonujte ukázkové úložiště:
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Ujistěte se, že zahrnete --config core.autocrlf=input argument, který zaručuje správné konce řádků v souborech, které se používají v kontejneru Linuxu.
Pak přejděte do složky:
cd docker-django-webapp-linux
Stažení souboru ZIP z GitHubu
Místo použití klonu Gitu můžete přejít na https://github.com/Azure-Samples/docker-django-webapp-linux místnísoubor ZIP pro >>.
Rozbalte soubor ZIP do složky s názvem docker-django-webapp-linux.
Pak otevřete okno terminálu ve složce docker-django-webapp-linux .
(Volitelné) Prozkoumání souboru Dockeru
Následuje soubor v ukázce s názvem Dockerfile. Popisuje image Dockeru a obsahuje pokyny ke konfiguraci.
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"]
- První skupina příkazů nainstaluje požadavky aplikace v prostředí.
- Druhá skupina příkazů vytvoří server SSH , který zajišťuje vylepšenou komunikaci zabezpečení mezi kontejnerem a hostitelem.
- Poslední řádek
ENTRYPOINT ["init.sh"]vyvolá spuštěníinit.shslužby SSH a serveru Python.
Místní sestavení a otestování image
Poznámka:
Docker Hub ukládá kvóty pro počet anonymních vyžádaných změn na IP adresu a počet ověřených vyžádaných změn na bezplatného uživatele. Pokud si všimnete, že stahování z Docker Hubu je omezené, zkuste spustit docker login , pokud jste se ještě nepřihlásili.
Spuštěním následujícího příkazu sestavte image:
docker build --tag appsvc-tutorial-custom-image .Otestujte, že sestavení funguje spuštěním kontejneru Dockeru místně:
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageTento
docker runpříkaz určuje port pomocí argumentu-pa obsahuje název image.-itvám umožní ho zastavit pomocí ctrl+C.Tip
Pokud používáte Windows a zobrazuje se vám chyba *standard_init_linux.go:211: Uživatelský proces exec způsobil ,že takový soubor nebo adresář neexistuje, " init.sh soubor obsahuje místo očekávaných ukončení řádků CRLF. K této chybě dochází v případě, že jste ke klonování ukázkového úložiště použili Git, ale parametr jste vynechali
--config core.autocrlf=input. V tomto případě znovu naklonujte úložiště s argumentem--config. Chyba se může zobrazit také v případě, že jste upravili init.sh a uložili ji s koncovkami CRLF. V tomto případě soubor znovu uložte pouze s koncovkami LF.Přejděte a
http://localhost:8000ověřte, že webová aplikace a kontejner fungují správně.
Vytvoření spravované identity přiřazené uživatelem
Služba App Service může použít výchozí spravovanou identitu nebo spravovanou identitu přiřazenou uživatelem k ověření v registru kontejneru. V tomto kurzu použijete spravovanou identitu přiřazenou uživatelem.
Spuštěním příkazu az group create vytvořte skupinu prostředků:
az group create --name msdocs-custom-container-tutorial --location westeuropeHodnotu můžete změnit
--locationtak, aby se zadala oblast blízko vás.Vytvořte spravovanou identitu ve skupině prostředků:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
Vytvoření registru kontejneru
Pomocí následujícího
az acr createpříkazu vytvořte registr kontejneru. Nahraďte položku<registry-name>jedinečným názvem pro svůj registr. Název musí obsahovat jenom písmena a číslice a musí být jedinečný ve všech Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled trueTento
--admin-enabledparametr umožňuje nasdílení imagí do registru pomocí přihlašovacích údajů správce.Spuštěním
az credential acr showpříkazu načtěte přihlašovací údaje správce:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>Výstup JSON tohoto příkazu poskytuje dvě hesla spolu s uživatelským jménem registru.
Nasdílení ukázkové image do služby Container Registry
V této části nasdílíte image do služby Container Registry, kterou používá služba App Service později.
Z místního terminálu, kde jste vytvořili ukázkovou image, použijte
docker loginpříkaz pro přihlášení k registru kontejneru:docker login <registry-name>.azurecr.io --username <registry-username>Nahraďte
<registry-name>hodnoty z předchozích kroků a<registry-username>nahraďte je. Po zobrazení výzvy zadejte jedno z hesel z předchozí části.Ve všech zbývajících krocích tohoto oddílu použijte stejný název registru.
Po úspěšném přihlášení označte místní image Dockeru do registru:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestdocker pushPomocí příkazu odešlete image do registru:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestPrvní nahrání obrázku může trvat několik minut, protože obsahuje základní image. Následné nahrávání je obvykle rychlejší.
Během čekání můžete dokončit kroky v další části a nakonfigurovat službu App Service tak, aby se nasadí z registru.
Autorizace spravované identity pro registr
Spravovaná identita, kterou jste vytvořili, ještě nemá autorizaci pro vyžádání z registru kontejneru. V tomto kroku povolíte autorizaci.
Načtěte ID objektu zabezpečení pro spravovanou identitu:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)Načtěte ID prostředku pro registr kontejneru:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)Udělte spravované identitě oprávnění pro přístup k registru kontejneru:
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"Další informace o těchto oprávněních najdete v tématu Co je řízení přístupu na základě role v Azure?
Vytvoření webové aplikace
Pomocí příkazu vytvořte plán
az appservice plan createslužby App Service:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxPlán služby App Service odpovídá virtuálnímu počítači, který je hostitelem webové aplikace. Ve výchozím nastavení předchozí příkaz používá levnou cenovou úroveň B1, která je zdarma pro první měsíc. Úroveň můžete zadat pomocí parametru
--sku.Vytvořte webovou aplikaci pomocí
az webapp createpříkazu: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:latestNahraďte
<app-name>názvem webové aplikace. Tento název musí být v rámci služeb Azure jedinečný. Nahraďte<registry-name>také názvem vašeho registru z předchozí části.Tip
Pomocí příkazu
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorialmůžete kdykoli načíst nastavení kontejneru webové aplikace. Obrázek je zadán ve vlastnostiDOCKER_CUSTOM_IMAGE_NAME. Když se webová aplikace nasadí prostřednictvím šablon Azure DevOps nebo Azure Resource Manageru, může se image zobrazit také ve vlastnosti s názvemLinuxFxVersion. Obě vlastnosti slouží ke stejnému účelu. Pokud se obě nacházejí v konfiguraci webové aplikace,LinuxFxVersionmá přednost.
Konfigurace webové aplikace
V tomto kroku nakonfigurujete webovou aplikaci následujícím způsobem:
- Nakonfigurujte aplikaci tak, aby odesílala požadavky na port 8000. Ukázkový kontejner naslouchá na portu 8000 pro webové požadavky.
- Nakonfigurujte aplikaci tak, aby používala spravovanou identitu k načtení imagí z registru kontejneru.
- Nakonfigurujte průběžné nasazování z registru kontejneru. (Každá nasdílení změn imagí do registru aktivuje aplikaci, aby si novou image stáhla.) Tento krok není potřeba ke konfiguraci webové aplikace tak, aby načítá z registru kontejneru, ale může webovou aplikaci upozornit, když se do registru odešle nová image. Pokud tento krok nedokončíte, musíte ručně aktivovat vyžádání image restartováním webové aplikace.
Slouží
az webapp config appsettings setk nastaveníWEBSITES_PORTproměnné prostředí podle očekávání kódu aplikace:az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000Nahraďte
<app-name>názvem, který jste použili v předchozím kroku.Pomocí příkazu povolte spravovanou identitu přiřazenou uživatelem
az webapp identity assignve webové aplikaci: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 $idNahraďte
<app-name>názvem, který jste použili v předchozím kroku.Nakonfigurujte aplikaci tak, aby načítá z container Registry pomocí spravovaných identit.
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=TrueNahraďte
<app-name>názvem, který jste použili v předchozím kroku.Nastavte ID klienta, které vaše webová aplikace používá k načtení ze služby Container Registry. Tento krok se nevyžaduje, pokud používáte spravovanou identitu přiřazenou systémem.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdPovolte CI/CD ve službě App Service.
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_URLje adresa URL, kterou služba App Service vygeneruje za vás. Registr by měl tuto adresu URL použít k upozornění služby App Service, že došlo k nasdílení image. Webhook pro vás ve skutečnosti nevytvoří.Vytvořte webhook v registru kontejneru. Použijte CI_CD_URL, které jste získali v posledním kroku.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestPokud chcete otestovat, jestli je webhook správně nakonfigurovaný, odešlete příkaz ping na webhook a zkontrolujte, jestli se zobrazí odpověď 200 OK.
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"Tip
Pokud chcete zobrazit všechny informace o všech událostech webhooku, odeberte
--queryparametr.Pokud streamujete protokol kontejneru, měla by se
Starting container for sitezobrazit zpráva po příkazu ping webhooku, protože webhook aktivuje restartování aplikace.
Přechod na webovou aplikaci
Aplikaci otestujete tak, že přejdete na https://<app-name>.azurewebsites.net.
<app-name> nahraďte názvem vaší webové aplikace.
Při prvním pokusu o přístup k aplikaci může nějakou dobu trvat, než aplikace odpoví, protože App Service musí stáhnout celou image z registru. Pokud vyprší časový limit prohlížeče, stačí stránku aktualizovat. Po nahrání počáteční image se následné testy spustí mnohem rychleji.
Přístup k diagnostickým protokolům
Zatímco čekáte, až služba App Service načte image, je užitečné zjistit, co přesně dělá App Service streamováním protokolů kontejneru do terminálu.
Zapněte protokolování kontejneru:
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemPovolení streamu protokolu:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialPokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Soubory protokolu můžete také zkontrolovat v prohlížeči tak, že přejdete na
https://<app-name>.scm.azurewebsites.net/api/logs/docker.Pokud chcete streamování protokolů kdykoli zastavit, vyberte Ctrl+C.
Úprava kódu aplikace a opětovné nasazení
V této části provedete změnu kódu webové aplikace, znovu sestavíte image a pak ji nasdílíte do registru kontejneru. App Service pak automaticky načte aktualizovanou image z registru, aby se aktualizovala spuštěná webová aplikace.
V místní složce docker-django-webapp-linux otevřete soubor app/templates/app/index.html.
Změňte první element HTML tak, aby odpovídal následujícímu kódu.
<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>Uložte provedené změny.
Přejděte do složky docker-django-webapp-linux a znovu sestavte image:
docker build --tag appsvc-tutorial-custom-image .Aktualizujte značku image na
latest:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest<registry-name>nahraďte názvem vašeho registru.Nasdílení image do registru:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestPo dokončení nasdílení změn imagí webhook oznámí službě App Service oznámení o nabízeném oznámení a služba App Service se pokusí načíst aktualizovanou image. Počkejte několik minut a pak ověřte, jestli je aktualizace nasazená.
https://<app-name>.azurewebsites.net
Připojení ke kontejneru pomocí SSH
SSH umožňuje vylepšenou komunikaci zabezpečení mezi kontejnerem a klientem. Pokud chcete povolit připojení SSH ke kontejneru, musíte pro něj nakonfigurovat vlastní image. Po spuštění kontejneru můžete otevřít připojení SSH.
Konfigurace kontejneru pro SSH
Ukázková aplikace použitá v tomto kurzu už má v souboru Dockerfile potřebnou konfiguraci, která nainstaluje server SSH a také nastaví přihlašovací údaje. Tato část je pouze informativní. Pokud se chcete připojit ke kontejneru, přejděte k další části.
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
Poznámka:
Tato konfigurace neumožňuje externí připojení ke kontejneru. SSH je k dispozici pouze prostřednictvím webu Kudu/SCM. Web Kudu/SCM se ověřuje pomocí vašeho účtu Azure.
root:Docker! při použití protokolu SSH by nemělo být změněno. SCM/KUDU používá vaše přihlašovací údaje k webu Azure Portal. Změna této hodnoty způsobí chybu při použití protokolu SSH.
Dockerfile také zkopíruje soubor sshd_config do složky /etc/ssh/ a zpřístupňuje port 2222 v kontejneru:
COPY sshd_config /etc/ssh/
# ...
EXPOSE 8000 2222
Port 2222 je interní port přístupný pouze kontejnery v síti mostu privátní virtuální sítě.
Nakonec vstupní skript , init.sh, spustí server SSH.
#!/bin/bash
service ssh start
Otevření připojení SSH ke kontejneru
Přejděte na
https://<app-name>.scm.azurewebsites.net/webssh/hostsvůj účet Azure a přihlaste se.<app-name>nahraďte názvem vaší webové aplikace.Když se přihlásíte, budete přesměrováni na informační stránku webové aplikace. Výběrem SSH v horní části stránky otevřete prostředí a použijte příkazy.
Pomocí příkazu můžete například prozkoumat procesy spuštěné v aplikaci
top.
Vyčištění prostředků
Za prostředky, které jste vytvořili v tomto článku, se můžou účtovat průběžné náklady. Pokud chcete prostředky vyčistit, stačí odstranit jenom skupinu prostředků, která je obsahuje:
az group delete --name msdocs-custom-container-tutorial
Další kroky
Naučili jste se:
- Nasaďte vlastní image do privátního registru kontejneru.
- Nasaďte vlastní image do služby App Service.
- Aktualizujte a znovu nasaďte image.
- Přístup k diagnostickým protokolům
- Připojte se ke kontejneru pomocí SSH.
- Nasdílení vlastní image Dockeru do služby Container Registry
- Nasaďte vlastní image do služby App Service.
- Nakonfigurujte proměnné prostředí.
- Stáhněte image do služby App Service pomocí spravované identity.
- Přístup k diagnostickým protokolům
- Povolte CI/CD ze služby Container Registry do služby App Service.
- Připojte se ke kontejneru pomocí SSH.
Přejděte k dalšímu kurzu:
Nebo se podívejte na další zdroje informací: