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

Azure App Service poskytuje předdefinované zásobníky aplikací ve Windows, jako je ASP.NET nebo Node.js, které 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 naleznete v tématu Funkce operačního systému ve službě Aplikace Azure 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. Proto je snadné 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. Do služby Azure Container Registry nasadíte vlastní nakonfigurovanou image Windows ze sady Visual Studio a pak ji spustíte ve službě App Service.

Zobrazuje webovou aplikaci spuštěnou v kontejneru Windows.

Požadavky

Pro absolvování tohoto kurzu potřebujete:

Místní nastavení aplikace

Stažení ukázky

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

Tento ukázkový projekt obsahuje jednoduchou aplikaci ASP.NET, která využívá vlastní písmo nainstalované do knihovny písem 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.

Zadáním Ctrl+F5 spusťte aplikaci bez zapnutého ladění. 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 ji ale místo toho nasadit pomocí kontejneru Windows, protože písmo můžete nainstalovat do tohoto 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ů.

Snímek obrazovky s oknem Průzkumník řešení s vybranými položkami nabídky CustomFontSample project, Add a Container Orchestrator Support

Vyberte Docker Compose>OK.

Váš projekt je teď nastavený tak, aby běžel v kontejneru Windows. Do projektu CustomFontSample se přidá a Dockerfiledo ř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 pak tento 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ě Azure Container Registry.

Otevření průvodce publikováním

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

Snímek obrazovky Průzkumník řešení zobrazující projekt CustomFontSample a vybranou možnost Publikovat

Vytvoření registru a publikování

V průvodci publikováním vyberte Registr kontejneru>Vytvořit nový Azure Container Registry>Publikovat.

Snímek obrazovky s průvodcem publikováním se službou Container Registry, vytvořením nového služby Azure Container Registry a vybraným tlačítkem Publikovat

Přihlášení pomocí účtu Azure

V dialogu Vytvořit nový Azure Container Registry vyberte Přidat účet a přihlaste se ke svému předplatnému Azure. Pokud už jste přihlášení, vyberte z rozevíracího seznamu účet, který obsahuje požadované předplatné.

Přihlaste se do Azure.

Konfigurace registru

Nakonfigurujte nový registr kontejneru podle navržených hodnot v následující tabulce. Po dokončení vyberte Vytvořit.

Nastavení Navrhovaná hodnota Další informace
Předpona DNS Ponechejte vygenerovaný název registru nebo ho změňte na jiný jedinečný název.
Skupina prostředků Vyberte Nový, zadejte myResourceGroup a vyberte OK.
Skladová jednotka (SKU) Basic Cenové úrovně
Umístění registru Západní Evropa

Nakonfigurujte registr kontejnerů Azure.

Otevře se okno terminálu s průběhem nasazování image. Počkejte, až se nasazení dokončí.

Přihlášení k Azure

Přihlaste se k portálu Azure.

Vytvoření webové aplikace

V nabídce vlevo vyberte Vytvořit prostředek>Web>Web App for Containers.

Základní informace o konfiguraci aplikací

Na kartě Základy nakonfigurujte nastavení podle následující tabulky a pak vyberte Další: Docker.

Nastavení Navrhovaná hodnota Další informace
Předplatné Ujistěte se, že je vybrané správné předplatné.
Skupina prostředků Vyberte Vytvořit nový, zadejte myResourceGroup a 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 Dockeru
Operační systém Windows
Oblast Západní Evropa
Plán Windows Vyberte Vytvořit nový, zadejte myAppServicePlan a vyberte OK.

Karta Základy by měla vypadat takto:

Zobrazuje kartu Základy sloužící ke konfiguraci webové aplikace.

Konfigurace kontejneru Windows

Na kartě Docker nakonfigurujte vlastní kontejner Windows, jak je znázorněno v následující tabulce, a vyberte Zkontrolovat a vytvořit.

Nastavení Navrhovaná hodnota
Zdroj obrázku Azure Container Register
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í operace Azure se zobrazí okno s oznámením.

Ukazuje, že je operace Azure dokončená.

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

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

Na nové stránce prohlížeče se otevře následující stránka:

Zobrazí novou stránku prohlížeče pro webovou aplikaci.

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

Zobrazuje domovskou stránku s nakonfigurovaným písmem.

Gratulujeme! Migrovali jste aplikaci ASP.NET do služby Azure 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 tak <, že nahradí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

Aplikace Azure Služba používá technologii kontejneru Dockeru k hostování integrovaných imagí i vlastních imagí. Pokud chcete zobrazit seznam integrovaný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–x64, ARM64 se nepodporuje.

V tomto kurzu se naučíte:

  • Odeslání vlastní image Dockeru do služby Azure Container Registry
  • Nasazení vlastní image do služby App Service
  • Konfigurace proměnných prostředí
  • Načtení image do služby App Service pomocí spravované identity
  • Přístup k diagnostickým protokolům
  • Povolení CI/CD ze služby Azure Container Registry do služby App Service
  • Připojit se ke kontejneru pomocí SSH

Dokončením tohotokurzuho programu se v účtu Azure účtuje malý poplatek a za hostování kontejneru po dobu delší než měsíc se můžou účtovat další náklady.

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.

  • 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í pomocí Gitu

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 Linux:

Pak přejděte do složky:

cd docker-django-webapp-linux

Stažení z GitHubu

Místo použití git cloneu můžete navštívit https://github.com/Azure-Samples/docker-django-webapp-linux, vybrat Clone (Klonovat) a pak vybrat Download ZIP (Stáhnout ZIP).

Rozbalte soubor ZIP do složky s názvem docker-django-webapp-linux.

Pak otevřete okno terminálu vesložce docker-django-webapp-linux .

(Volitelné) Prozkoumání souboru Dockeru

Soubor v ukázce s názvem Dockerfile , který 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 pro zabezpečenou komunikaci mezi kontejnerem a hostitelem.
  • Poslední řádek ENTRYPOINT ["init.sh"]vyvolá spuštění init.sh služby SSH a serveru Python.

Místní sestavení a otestování image

Poznámka:

Docker Hub má kvóty pro počet anonymních vyžádání na IP adresu a počet ověřených vyžádaných změn na bezplatného uživatele (viz Přenos dat). Pokud si všimnete, že stahování z Docker Hubu je omezené, zkuste to zkusit docker login , pokud ještě nejste přihlášení.

  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 místně:

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

    Tento docker run příkaz určuje port s -p argumentem následovaným názvem image. -it vám to umožní zastavit s 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ů CR-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 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.

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

    Místní testování webové aplikace

I. Vytvoření spravované identity přiřazené uživatelem

App Service může buď 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.

  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 můžete změnit --location tak, aby se zadala oblast blízko vás.

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

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

II. Vytvoření registru kontejneru

  1. Vytvořte registr kontejneru pomocí az acr create příkazu a nahraďte <registry-name> jedinečným názvem vašeho registru. 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 true
    

    Tento --admin-enabled parametr umožňuje nasdílení imagí do registru pomocí sady přihlašovacích údajů správce.

  2. Spuštěním az 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.

III. Nahrání ukázkové image do služby Azure Container Registry

V této části nahrajete image do služby Azure Container Registry, kterou bude služba App Service používat 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> hodnoty z předchozích kroků a <registry-username> nahraďte je. Po zobrazení výzvy zadejte jedno z hesel z předchozího kroku.

    Stejný název registru použijete ve všech zbývajících krocích tohoto oddílu.

  2. 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:latest
    
  3. docker push Pomocí příkazu 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í 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.

IV. Autorizace spravované identity pro registr

Spravovaná identita, kterou jste vytvořili, ještě nemá autorizaci pro načtení z registru kontejneru. V tomto kroku povolíte autorizaci.

  1. 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)
    
  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.

V. Vytvoření webové aplikace

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

    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 řídit 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, který musí být jedinečný ve všech Azure. 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 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.

VI. Konfigurace webové aplikace

V tomto kroku nakonfigurujete webovou aplikaci následujícím způsobem:

  • Ukázkový kontejner naslouchá na portu 8000 pro webové požadavky a nakonfigurujete aplikaci tak, aby odesílala požadavky na port 8000.
  • Řekněte aplikaci, aby používala spravovanou identitu k načtení imagí z registru kontejneru.
  • Nakonfigurujte průběžné nasazování z registru kontejneru (nebo každá vložená image do registru aktivuje vaši aplikaci pro načtení nové image). Tato část není nutná, aby vaše webová aplikace načítá z registru kontejneru, ale může dát vaší webové aplikaci vědět, kdy se do registru odešle nová image. Bez něj musíte ručně aktivovat vyžádání image restartováním webové aplikace.
  1. Slouží az webapp config appsettings set k nastavení WEBSITES_PORT promě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=8000
    

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

    Další informace o této proměnné prostředí najdete v souboru readme v úložišti GitHub ukázky.

  2. Pomocí příkazu povolte spravovanou identitu přiřazenou uživatelem az webapp identity assign ve 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 $id
    

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

  3. Nakonfigurujte aplikaci tak, aby načítá z Azure 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žili v předchozím kroku.

  4. Nastavte ID klienta, které vaše webová aplikace používá k načtení ze služby Azure Container Registry. Tento krok není potřeba, 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 nasdílení image. Webhook pro vás ve skutečnosti nevytvoří.

  6. Pomocí CI_CD_URL, které jste získali z posledního kroku, vytvořte ve svém registru kontejneru webhook.

    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 zobrazit zpráva po příkazu ping webhooku: Starting container for site, protože webhook aktivuje restartování aplikace.

VII. Přechod na webovou aplikaci

Aplikaci otestujete tak, že přejdete na https://<app-name>.azurewebsites.netmísto <app-name> názvu vaší webové aplikace.

Při prvním přístupu 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 budou následné testy mnohem rychlejší.

Snímek obrazovky prohlížeče znázorňující úspěšné spuštění webové aplikace v Azure

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

  1. Zapněte protokolování kontejneru:

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

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

    Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.

    Soubory protokolu můžete také zkontrolovat v prohlížeči na https://<app-name>.scm.azurewebsites.net/api/logs/docker.

  3. Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.

IX. Ú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.

  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 provedené 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 značku image na nejnovější:

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

    <registry-name> nahraďte názvem vašeho registru.

  6. Nasdílení image do registru:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. Po dokončení nabízení image 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, že byla aktualizace nasazena, a to tak, že přejdete na https://<app-name>.azurewebsites.net.

X. Připojit se ke kontejneru pomocí SSH

SSH umožňuje zabezpečenou komunikaci 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! by nemělo být změněno SSH. SCM/KUDU použije vaše přihlašovací údaje k webu Azure Portal. Změna této hodnoty způsobí chybu při použití protokolu SSH.

Soubor 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

  1. Přejděte a https://<app-name>.scm.azurewebsites.net/webssh/host přihlaste se pomocí svého účtu Azure. <app-name> nahraďte názvem vaší webové aplikace.

  2. 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 něm top .

XI. 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:

  • Nasazení vlastní image do privátního registru kontejneru
  • Nasazení a vlastní image ve službě App Service
  • Aktualizace a opětovné nasazení image
  • Přístup k diagnostickým protokolům
  • Připojit se ke kontejneru pomocí SSH
  • Odeslání vlastní image Dockeru do služby Azure Container Registry
  • Nasazení vlastní image do služby App Service
  • Konfigurace proměnných prostředí
  • Načtení image do služby App Service pomocí spravované identity
  • Přístup k diagnostickým protokolům
  • Povolení CI/CD ze služby Azure Container Registry do služby App Service
  • Připojit se ke kontejneru pomocí SSH

V dalším kurzu se dozvíte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.

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