Migrace vlastního softwaru do služby Azure App Service pomocí vlastního kontejneru

Azure App Service poskytuje předdefinované zásobníky aplikací, jako jsou ASP.NET nebo Node.js, ve Windows. Tyto aplikační zásobníky běží ve službě IIS. Předkonfigurované prostředí Windows omezuje operační systém v těchto oblastech:

  • Přístup ke správě.
  • Instalace softwaru.
  • Změny globální mezipaměti sestavení (GAC).

Další informace najdete v tématu Funkce operačního systému ve službě App Service.

Můžete nasadit vlastní nakonfigurovanou bitovou kopii systému 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 aplikaci v místním prostředí, 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 bitovou kopii Windows ze sady Visual Studio do služby Azure Container Registry a pak ji spustíte ve službě App Service.

Snímek obrazovky znázorňující webovou aplikaci spuštěnou v kontejneru Windows

Předpoklady

Nastavte aplikaci místně

Stáhněte si ukázku

V tomto kroku nastavíte místní projekt .NET.

Ukázkový projekt obsahuje jednoduchou aplikaci ASP.NET, která používá vlastní písmo nainstalované ve složce Písma ve Windows. Písma není nutné instalovat. Ukázka je ale příkladem aplikace, která je integrovaná s podkladovým operačním systémem. Chcete-li 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.

Nainstalovat písmo

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 ve Visual Studiu.

Pokud chcete aplikaci spustit bez ladění, vyberte Ctrl+F5 . Aplikace se zobrazí ve vašem výchozím prohlížeči.

Snímek obrazovky zobrazující aplikaci zobrazenou ve 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.

Nakonfigurujte kontejner Windows

V Průzkumníku řešení klikněte pravým tlačítkem na projekt CustomFontSample a vyberte Přidat>Podpora orchestrace kontejnerů.

Snímek obrazovky s projektem CustomFontSample v Průzkumníku řešení. Položky nabídky Add a Container Orchestrator Support jsou zvýrazněné.

Vyberte Docker Compose>OK.

Váš projekt je teď nastavený tak, aby běžel v kontejneru Windows. Do projektu CustomFontSample se přidá soubor Dockerfile a do řešení se přidá projekt docker-compose.

V Průzkumníku řešení otevřete Dockerfile.

Je nutné použít podporovaný nadřazený obraz. Nadřazený obraz 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 Docker spuštěný na místním počítači.

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řete okno Publikovat

V Průzkumníku řešení klikněte pravým tlačítkem na projekt CustomFontSample a vyberte Publikovat.

Snímek obrazovky s projektem CustomFontSample v Průzkumníku řešení. Položka nabídky Publikovat je zvýrazněná.

Vytvořte a publikujte registr

  1. V okně Publikovat vyberte Azure a pak vyberte Další.

  2. Vyberte Azure Container Registry a pak vyberte Další.

  3. Vyberte předplatné, do kterého chcete publikovat registr, a pak vyberte Vytvořit.

Snímek obrazovky znázorňující okno Publikovat. Tlačítko Vytvořit nový je zvýrazněné.

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é.

Nakonfigurujte registr

Nakonfigurujte nový registr kontejnerů pomocí navrhovaných hodnot v následující tabulce jako vodítko. Po dokončení vyberte Vytvořit.

Nastavení Navrhovaná hodnota
Předpona DNS Ponechte vygenerovaný název registru nebo ho změňte na jiný jedinečný název.
Skupina zdrojů Vyberte Nový, zadejte myResourceGroup a pak vyberte OK.
SKU Basic. Další informace najdete v tématu Cenové úrovně.
Umístění registru Západní Evropa

Snímek obrazovky s oknem Azure Container Registry

Vyberte Dokončit.

Otevře se okno terminálu a zobrazí průběh nasazení image. Počkejte, až se nasazení dokončí.

Přihlaste se k Azure

Přihlaste se k portálu Azure.

Vytvořit webovou aplikaci

Vyberte Vytvořit prostředek a pak vyberte Vytvořit v části Webová aplikace.

Nastavit základní údaje aplikace

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.
Jméno 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
Windows Plan Vyberte Vytvořit nový, zadejte myAppServicePlan a pak vyberte OK.

Karta Základy by měla vypadat nějak takto:

Snímek obrazovky s kartou Základy, která se používá ke konfiguraci webové aplikace

Nakonfigurujte kontejner 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 systému Vyberte registry, který jste vytvořili již dříve.
Obrázek customfontsample
Tag nejnovější

Dokončit vytvoření aplikace

Vyberte Vytvořit a počkejte, až Azure vytvoří požadované prostředky.

Přejděte do webové aplikace

Po dokončení nasazení se zobrazí zpráva s oznámením:

Snímek obrazovky zobrazující zprávu s oznámením.

  1. Vyberte Přejít k prostředku.

  2. Na stránce aplikace vyberte odkaz pod URL.

Otevře se nová stránka prohlížeče s následující stránkou:

Snímek obrazovky, který zobrazuje novou stránku prohlížeče pro webovou aplikaci.

Počkejte několik minut a zkuste to znovu, dokud nedostanete domovskou stránku s písmem, které očekáváte:

Snímek obrazovky domovské stránky s nakonfigurovaným písmem

Gratulujeme! Migrovali jste aplikaci ASP.NET do služby App Service v kontejneru Windows.

Zobrazit protokoly 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 <app-name> 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 není podporováno.

V tomto kurzu se naučíte:

  • Nahrajte 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řistupte 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, mohou vám vzniknout další náklady.

Nastavte počáteční 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.

  • Nainstalujte Docker, který použijete k sestavení Docker images. 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í.

Naklonujte repozitář pomocí Git Bash

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

Stáhněte soubor ZIP z GitHubu

Místo použití příkazu Git clone můžete přejít na https://github.com/Azure-Samples/docker-django-webapp-linux a vybrat Code>Local>Download ZIP.

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 .

Připravte nádobu na vzorek

Novější prohlížečový terminál a az webapp exec poskytují autentizovaný přístup k běžícím linuxovým kontejnerům bez nutnosti SSH serveru nebo vloženého SSH hesla v obrazu. Legacy Kudu WebSSH a přístup az webapp ssh mohou stále vyžadovat server SSH. Ukázkové úložiště obsahuje zastaralé nastavení SSH. Před sestavením nahraďte obsah jeho Dockerfile následující konfigurací pouze pro aplikaci:

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/

COPY init.sh /usr/local/bin/

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

ENTRYPOINT ["init.sh"]

Nahraďte obsah init.sh následujícím skriptem, přičemž zachovejte koncovky řádků v Linuxu:

#!/bin/bash
set -e

exec python /code/manage.py runserver 0.0.0.0:8000

Odstraňte starší soubor sshd_config ze své místní složky se vzorky, aby jej ADD . /code/ nezkopíroval do image.

Dockerfile nainstaluje závislosti aplikace, zkopíruje aplikaci a spouštěcí skript a zpřístupní port aplikace. Entrypoint spustí pouze aplikaci Python. Tyto změny odstraňují instalaci SSH a přihlašovací údaje ukázky. Obrázek obsahuje /bin/bash pro novější terminál prohlížeče a výchozí shell az webapp exec.

Sestavte a otestujte image místně

Poznámka

Docker Hub ukládá kvóty pro počet anonymních stažení na IP adresu a počet ověřených stažení na bezplatného uživatele. Pokud si všimnete, že dochází k omezování stahování z Docker Hubu, zkuste spustit docker login, pokud jste se ještě nepřihlásili.

  1. Spuštěním následujícího příkazu sestavte image:

    docker build --tag appsvc-tutorial-custom-image .
    
  2. Otestujte, že sestavení funguje spuštěním kontejneru Dockeru lokálně:

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

    Tento docker run příkaz určuje port pomocí argumentu -p a obsahuje název image. -it vám umožní ho zastavit pomocí ctrl+C.

    Tip

    Pokud používáte Windows a zobrazí se vám chyba *standard_init_linux.go:211: exec user process caused "no such file or directory," soubor init.sh obsahuje konce řádků CRLF místo očekávaných konců LF. K této chybě dochází v případě, že jste ke klonování ukázkového úložiště použili Git, ale vynechali jste parametr --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 jej s koncovkami CRLF. V tomto případě soubor znovu uložte pouze s koncovkami LF.

  3. Přejděte na http://localhost:8000 a ověřte, že webová aplikace a kontejner fungují správně.

    Snímek obrazovky výsledků testu.

Vytvořit spravovanou identitu přiřazenou uživatelem

Služba App Service může použít výchozí spravovanou identitu nebo spravovanou identitu přiřazenou uživatelem k ověřování vůči registru kontejnerů. V tomto kurzu použijete spravovanou identitu přiřazenou uživatelem.

  1. Spuštěním příkazu az group create vytvořte skupinu prostředků:

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

    Hodnotu --location můžete změnit a určit tak oblast ve svém okolí.

  2. Vytvořte spravovanou identitu ve skupině prostředků:

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

Vytvořit registr kontejnerů

  1. Pomocí následujícího az acr create příkazu vytvořte registr imagí kontejnerů. Nahraďte položku <registry-name> jedinečným názvem pro svůj registr úložiště. Název musí obsahovat jenom písmena a číslice a musí být jedinečný v rámci celé platformy Azure.

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

    Tento --admin-enabled parametr umožňuje odesílat image do registru pomocí přihlašovacích údajů správce.

  2. Spuštěním az credential acr show pří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.

Nahrání ukázkového 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.

  1. Z místního terminálu, kde jste vytvořili ukázkovou image, použijte docker login příkaz pro přihlášení k registru kontejneru:

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

    Nahraďte <registry-name> a <registry-username> hodnotami z předchozích kroků. 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.

  2. Po úspěšném přihlášení otagujte svůj místní image Dockeru pro registr:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  3. Pomocí příkazu docker push odešlete image do registru:

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

    První nahrání obrázku může trvat několik minut, protože obsahuje základní bitovou kopii. 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 nasazovala z registru.

Autorizujte spravovanou identitu pro váš registr

Spravovaná identita, kterou jste vytvořili, ještě nemá oprávnění ke stažení z registru kontejnerů. V tomto kroku povolíte autorizaci.

  1. Načtěte ID principálu pro spravovanou identitu:

    principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
    
  2. 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)
    
  3. 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řit webovou aplikaci

  1. Vytvořte plán služby App Service pomocí příkazu az appservice plan create:

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

    Plá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 .

  2. Vytvořte webovou aplikaci pomocí az webapp create pří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:latest
    

    Nahraďte <app-name> názvem webové aplikace. Tento název musí být v rámci služeb Azure jedinečný. Také nahraďte <registry-name> názvem svého 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 vlastnosti DOCKER_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ázvem LinuxFxVersion. Obě vlastnosti slouží ke stejnému účelu. Pokud se obě nacházejí v konfiguraci webové aplikace, LinuxFxVersion má přednost.

Nakonfigurujte webovou aplikaci

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 kontejnerů. (Každé nahrání image do registru aktivuje aplikaci, aby si novou image stáhla.) Tento krok není potřeba ke konfiguraci webové aplikace tak, aby načítala z registru kontejnerů, ale může webovou aplikaci upozornit, když se do registru odešle nová image. Pokud tento krok nedokončíte, musíte ručně spustit stažení image restartováním webové aplikace.
  1. Pomocí az webapp config appsettings set nastavte proměnnou prostředí WEBSITES_PORT 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=8000
    

    Nahraďte <app-name> názvem, který jste použil v předchozím kroku.

  2. Povolte ve webové aplikaci spravovanou identitu přiřazenou uživatelem pomocí příkazu az webapp identity assign:

    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
    

    Nahraďte název, který jste použili v předchozím kroku, textem <app-name>.

  3. Nakonfigurujte aplikaci tak, aby stahovala 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=True
    

    Nahraďte <app-name> názvem, který jste použil/a v předchozím kroku.

  4. Nastavte ID klienta, které vaše webová aplikace používá ke stahování z 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=$clientId
    
  5. Povolte 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_URL je 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 nahrání image do registru. Ve skutečnosti vám webhook nevytvoří.

  6. Vytvořte webhook v registru kontejnerů. 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:latest
    
  7. Pokud 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 --query parametr.

    Pokud streamujete protokol kontejneru, měla by se Starting container for site zobrazit zpráva po příkazu ping webhooku, protože webhook způsobí restart aplikace.

Přejděte do webové aplikace

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.

Snímek obrazovky webové aplikace spuštěné v prohlížeči

Přistupovat k diagnostickým protokolům

Zatímco čekáte, až služba App Service načte bitovou kopii, je užitečné zjistit, co přesně App Service dělá, streamováním protokolů kontejneru do terminálu.

  1. Zapněte protokolování kontejneru:

    az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
    
  2. Povolte stream protokolu:

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

    Pokud nevidíte záznamy konzole 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.

  3. Pokud chcete streamování protokolů kdykoli zastavit, vyberte Ctrl+C.

Upravte kód aplikace a znovu ji nasaďte

V této části provedete změnu kódu webové aplikace, znovu sestavíte image a pak ji nahrajete do registru kontejnerů. App Service pak automaticky načte aktualizovanou image z registru, aby se aktualizovala spuštěná webová aplikace.

  1. V místní složce docker-django-webapp-linux otevřete soubor app/templates/app/index.html.

  2. 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>
    
  3. Uložte změny.

  4. Přejděte do složky docker-django-webapp-linux a znovu sestavte image:

    docker build --tag appsvc-tutorial-custom-image .
    
  5. Aktualizujte štítek obrázku 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 registry.

  6. Nahrajte image do registru:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. Po dokončení odeslání image webhook oznámí službě App Service odeslání image a služba App Service se pokusí načíst aktualizovanou image. Počkejte několik minut a pak ověřte, jestli je aktualizace nasazená, tím, že přejdete na https://<app-name>.azurewebsites.net.

Připojte se ke kontejneru pomocí SSH

Když kontejner běží, můžete k němu přistupovat přes autentizovaný proxy Kudu App Service pomocí novějšího terminálu prohlížeče nebo az webapp exec. Pro tyto možnosti nemusíte v obraze instalovat ani spouštět SSH server.

Pro požadavky na přístup a ovládání aplikací nebo slotů viz Otevřít shell kontejneru (SSH) a spustit příkazy.

Otevřete připojení SSH ke kontejneru

  1. Použijte Azure CLI 2.90.0 nebo novější a přihlaste se do svého Azure účtu. Otevřete interaktivní shell ve svém lokálním terminálu pomocí příkazu preview az webapp exec:

    az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>
    
  2. Prohlédněte si procesy běžící v aplikaci pomocí top, pokud je to v imagi dostupné.

Pro oddělené provádění příkazů místo interaktivní relace viz Spustit příkazy bez interaktivní relace. Přijetí požadavku nepotvrzuje, že příkaz byl úspěšně dokončen.

Vyčistit prostředky

Za zdroje, 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í bitovou kopii do privátního registru kontejnerů.
  • Nasaďte vlastní bitovou kopii do služby App Service.
  • Aktualizujte a znovu nasaďte image.
  • Přistupujte k diagnostickým protokolům
  • Připojte se ke kontejneru pomocí SSH.
  • Nahrajte 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řistupte 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 návodu:

Nebo se podívejte na další zdroje informací: