Migrera anpassad programvara till Azure App Service med hjälp av en anpassad container
Azure App Service tillhandahåller fördefinierade programstackar, till exempel ASP.NET eller Node.js, i Windows. Dessa programstackar körs på IIS. Den förkonfigurerade Windows-miljön låser operativsystemet från:
- Administrativ åtkomst.
- Programvaruinstallationer.
- Ändringar i den globala sammansättningscacheminnet.
Mer information finns i Operativsystemfunktioner i Azure App Service.
Du kan distribuera en anpassad konfigurerad Windows-avbildning från Visual Studio för att göra os-ändringar som din app behöver. Det gör det enkelt att migrera en lokal app som kräver en anpassad operativsystem- och programvarukonfiguration. Den här kursen beskriver hur du migrerar en ASP.NET-app till App Service som använder anpassade teckensnitt som installeras i Windows-teckensnittsbiblioteket. Du distribuerar en anpassad konfigurerad Windows-avbildning från Visual Studio till Azure Container Registry och kör den sedan i App Service.
Förutsättningar
För att slutföra den här kursen behöver du:
- Registrera dig för ett Docker Hub-konto.
- Installera Docker för Windows.
- Konfigurera Docker för att köra Windows-containrar.
- Installera Visual Studio 2022 med arbetsbelastningarna ASP.NET och webbutveckling och Azure Development . Om du redan har installerat Visual Studio 2022:
- Installera de senaste uppdateringarna i Visual Studio genom att välja Hjälp>sök efter uppdateringar.
- Lägg till arbetsbelastningarna i Visual Studio genom att välja Verktyg>Hämta verktyg och funktioner.
Konfigurera appen lokalt
Hämta exemplet
I det här steget konfigurerar du det lokala .NET-projektet.
- Ladda ned exempelprojektet.
- Extrahera (packa upp) custom-font-win-container-master.zip-filen.
Exempelprojektet innehåller ett enkelt ASP.NET program som använder ett anpassat teckensnitt som är installerat i Windows-teckensnittsbiblioteket. Det är inte nödvändigt att installera teckensnitt. Exemplet är dock ett exempel på en app som är integrerad med det underliggande operativsystemet. För att migrera den här typen av app till App Service måste du antingen omorganisera din kod för att ta bort integrationen eller migrera den som den är i en anpassad Windows-container.
Installera teckensnittet
I Utforskaren navigerar du till custom-font-win-container-master/CustomFontSample, högerklickar på FrederickatheGreat-Regular.ttf och väljer Installera.
Det här teckensnittet är offentligt tillgängligt från Google Fonts.
Kör appen
Öppna filen custom-font-win-container-master/CustomFontSample.sln i Visual Studio.
Välj Ctrl+F5 för att köra appen utan att felsöka. Appen visas i din standardwebbläsare.
Eftersom appen använder ett installerat teckensnitt kan appen inte köras i Sandbox-miljön för App Service. Du kan dock distribuera den med hjälp av en Windows-container i stället, eftersom du kan installera teckensnittet i Windows-containern.
Konfigurera Windows-containern
I Solution Explorer högerklickar du på projektet CustomFontSample och väljer Lägg till>Container Orchestration Support (Stöd för containerorkestrering).
Välj Docker Compose>OK.
Projektet är nu inställt på att köras i en Windows-container. A Dockerfile
läggs till i CustomFontSample-projektet och ett docker-compose-projekt läggs till i lösningen.
Från Solution Explorer öppnar du Dockerfile.
Du måste använda en överordnad avbildning som stöds. Ändra den överordnade avbildningen genom att ersätta raden FROM
med följande kod:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Lägg till följande rad i slutet av filen och spara filen:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
Du hittar InstallFont.ps1 i projektet CustomFontSample. Det är ett enkelt skript som installerar teckensnittet. Du hittar en mer komplex version av skriptet i PowerShell-galleriet.
Kommentar
Om du vill testa Windows-containern lokalt kontrollerar du att Docker har startats på den lokala datorn.
Publicera till Azure Container Registry
Azure Container Registry kan lagra dina avbildningar för containerdistribution. Du kan konfigurera App Service för att använda avbildningar som finns i Azure Container Registry.
Öppna publiceringsguiden
I Solution Explorer högerklickar du på projektet CustomFontSample och väljer Publicera.
Skapa och publicera registret
I publiceringsguiden väljer du Containerregister>Create New Azure Container Registry (Skapa nytt Azure-containerregister)>Publicera.
Logga in med ett Azure-konto
I dialogrutan Skapa ett nytt Azure Container Registry väljer du Lägg till ett konto och loggar sedan in på din Azure-prenumeration. Välj det konto som innehåller den önskade prenumerationen i listrutan om du redan är inloggad.
Konfigurera registret
Konfigurera det nya containerregistret med hjälp av de föreslagna värdena i följande tabell som en guide. När det är klart väljer du Skapa.
Inställning | Föreslaget värde |
---|---|
DNS-prefix | Behåll det genererade registernamnet eller ändra det till ett annat unikt namn. |
Resursgrupp | Välj Ny, skriv myResourceGroup och välj OK. |
SKU | Grundläggande. Mer information finns i Prisnivåer. |
Registerplats | Europa, västra |
Ett terminalfönster öppnas och visar förloppet för avbildningsdistributionen. Vänta tills distributionen har slutförts.
Logga in på Azure
Logga in på Azure-portalen.
Skapa en webbapp
På den vänstra menyn väljer du Skapa en resurs>Webb>Webbapp för containrar.
Konfigurera grunderna för appar
På fliken Grundläggande konfigurerar du inställningarna enligt följande tabell. Välj sedan Nästa: Docker.
Inställning | Föreslaget värde |
---|---|
Abonnemang | Kontrollera att rätt prenumeration har valts. |
Resursgrupp | Välj Skapa ny, skriv myResourceGroup och välj OK. |
Namn | Skriv ett unikt namn. Webbadressen till webbappen är https://<app-name>.azurewebsites.net , där <app-name> är appens namn. |
Publicera | Docker-container |
Operativsystem | Windows |
Region | Europa, västra |
Windows-plan | Välj Skapa ny, skriv myAppServicePlan och välj OK. |
Fliken Grundläggande bör se ut så här:
Konfigurera Windows-containern
På fliken Docker konfigurerar du din anpassade Windows-container enligt följande tabell och väljer sedan Granska + skapa.
Inställning | Föreslaget värde |
---|---|
Bildkälla | Azure Container Register |
Register | Välj det register som du skapade tidigare. |
Bild | customfontsample |
Tag | senaste |
Slutför appgenereringen
Välj Skapa och vänta tills Azure har skapat de resurser som krävs.
Bläddra till webbappen
När distributionen är klar visas en meddelanderuta.
Välj Gå till resurs.
På appsidan väljer du länken under URL.
En ny webbläsarsida öppnas på följande sida:
Vänta några minuter och försök igen tills du får startsidan med det teckensnitt du förväntar dig:
Grattis! Du har migrerat ett ASP.NET-program till Azure App Service i en Windows-container.
Visa containerns startloggar
Det kan ta lite tid innan Windows-containern läses in. Om du vill se förloppet går du till följande URL. (Ersätt <appnamn> med namnet på din app.)
https://<app-name>.scm.azurewebsites.net/api/logstream
De strömmade loggarna ser ut så här:
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 använder Docker-containertekniken som värd för både inbyggda avbildningar och anpassade avbildningar. Om du vill se en lista över inbyggda avbildningar kör du Azure CLI-kommandot az webapp list-runtimes --os linux. Om dessa avbildningar inte uppfyller dina behov kan du skapa och distribuera en anpassad avbildning.
Kommentar
Containern bör vara inriktad på x86-64-arkitekturen. ARM64 stöds inte.
I den här självstudien lär du dig att:
- Skicka en anpassad Docker-avbildning till Azure Container Registry.
- Distribuera den anpassade avbildningen till App Service.
- Konfigurera miljövariabler.
- Hämta avbildningen till App Service med hjälp av en hanterad identitet.
- Få åtkomst till diagnostikloggar.
- Aktivera CI/CD från Azure Container Registry till App Service.
- Anslut till containern med hjälp av SSH.
Att slutföra den här självstudien medför en liten avgift i ditt Azure-konto för containerregistret och kan medföra mer kostnader om du är värd för containern längre än en månad.
Konfigurera din första miljö
Den här självstudien kräver version 2.0.80 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
- Ha ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Installera Docker, som du använder för att skapa Docker-avbildningar. Installation av Docker kan kräva en omstart av datorn.
När du har installerat Docker öppnar du ett terminalfönster och kontrollerar att docker har installerats:
docker --version
Klona eller ladda ned exempelappen
Du kan hämta exemplet för den här självstudien via git-klon eller nedladdning.
Klona med Git
Klona exempellagringsplatsen:
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Se till att du inkluderar --config core.autocrlf=input
argumentet för att garantera rätt radslut i filer som används i Linux-containern.
Navigera sedan till mappen:
cd docker-django-webapp-linux
Ladda ned från GitHub
I stället för att använda git-klon kan du besöka https://github.com/Azure-Samples/docker-django-webapp-linux och välja Kod>lokal>nedladdning ZIP.
Packa upp ZIP-filen i en mapp med namnet docker-django-webapp-linux.
Öppna sedan ett terminalfönster i mappen docker-django-webapp-linux .
(Valfritt) Granska Docker-filen
Det här är filen i exemplet med namnet Dockerfile. Den beskriver Docker-avbildningen och innehåller konfigurationsinstruktioner.
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"]
- Den första gruppen med kommandon installerar appens krav i miljön.
- Den andra gruppen med kommandon skapar en SSH-server som ger förbättrad säkerhet mellan containern och värden.
- Den sista raden,
ENTRYPOINT ["init.sh"]
, anroparinit.sh
för att starta SSH-tjänsten och Python-servern.
Skapa och testa avbildningen lokalt
Kommentar
Docker Hub har kvoter för antalet anonyma hämtningar per IP-adress och antalet autentiserade hämtningar per kostnadsfri användare. Om du märker att dina pull-hämtningar från Docker Hub är begränsade kan du prova docker login
om du inte redan är inloggad.
Kör följande kommando för att skapa avbildningen:
docker build --tag appsvc-tutorial-custom-image .
Testa att bygget fungerar genom att köra Docker-containern lokalt:
docker run -it -p 8000:8000 appsvc-tutorial-custom-image
Det här
docker run
kommandot anger porten med-p
argumentet och innehåller namnet på avbildningen.-it
låter dig stoppa det med Ctrl +C.Dricks
Om du kör i Windows och ser felet standard_init_linux.go:211: exec-användarprocessen orsakade "ingen sådan fil eller katalog" innehåller den init.sh filen CRLF-radslut i stället för förväntade LF-slut. Det här felet inträffar om du använde Git för att klona exempellagringsplatsen men utelämnade parametern
--config core.autocrlf=input
. I det här fallet klonar du lagringsplatsen igen med--config
argumentet . Du kan också se felet om du redigerade init.sh och sparade det med CRLF-slut. I det här fallet sparar du filen igen med endast LF-slut.Bläddra till för
http://localhost:8000
att kontrollera att webbappen och containern fungerar korrekt.
I. Skapa en användartilldelad hanterad identitet
App Service kan använda antingen en standardhanterad identitet eller en användartilldelad hanterad identitet för att autentisera med ett containerregister. I den här självstudien använder du en användartilldelad hanterad identitet.
Kör kommandot az group create för att skapa en resursgrupp:
az group create --name msdocs-custom-container-tutorial --location westeurope
Du kan ändra värdet
--location
för att ange en region nära dig.Skapa en hanterad identitet i resursgruppen:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
II. Skapa ett containerregister
Skapa ett containerregister med hjälp av följande
az acr create
kommando. Ersätt<registry-name>
med ett unikt namn för ditt register. Namnet får bara innehålla bokstäver och siffror och måste vara unikt i hela Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled true
Med
--admin-enabled
parametern kan du skicka avbildningar till registret med hjälp av administrativa autentiseringsuppgifter.Hämta de administrativa autentiseringsuppgifterna genom att
az credential acr show
köra kommandot:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
JSON-utdata för det här kommandot innehåller två lösenord tillsammans med registrets användarnamn.
III. Skicka exempelavbildningen till Azure Container Registry
I det här avsnittet skickar du avbildningen till Azure Container Registry, som kommer att användas av App Service senare.
Från den lokala terminalen där du skapade exempelavbildningen
docker login
använder du kommandot för att logga in i containerregistret:docker login <registry-name>.azurecr.io --username <registry-username>
Ersätt
<registry-name>
och<registry-username>
med värden från föregående steg. När du uppmanas till det skriver du in ett av lösenorden från föregående avsnitt.Du använder samma registernamn i alla återstående steg i det här avsnittet.
När inloggningen lyckas taggar du din lokala Docker-avbildning till registret:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
docker push
Använd kommandot för att skicka avbildningen till registret:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
Det kan ta några minuter att ladda upp bilden första gången eftersom den innehåller basavbildningen. Efterföljande uppladdningar går vanligtvis snabbare.
Medan du väntar kan du slutföra stegen i nästa avsnitt för att konfigurera App Service att distribuera från registret.
IV. Auktorisera den hanterade identiteten för registret
Den hanterade identitet som du skapade har inte behörighet att hämta från containerregistret än. I det här steget aktiverar du auktoriseringen.
Hämta huvud-ID:t för den hanterade identiteten:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
Hämta resurs-ID:t för containerregistret:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)
Ge den hanterade identiteten behörighet att komma åt containerregistret:
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"
Mer information om dessa behörigheter finns i Vad är rollbaserad åtkomstkontroll i Azure?.
V. Skapa webbappen
Skapa en App Service-plan med kommandot
az appservice plan create
:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
En App Service-plan motsvarar den virtuella dator som är värd för webbappen. Som standard använder det tidigare kommandot en billig B1-prisnivå som är kostnadsfri under den första månaden. Du kan ange nivån med hjälp av parametern
--sku
.Skapa webbappen
az webapp create
med kommandot :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
Ersätt
<app-name>
med ett namn för webbappen. Namnet måste vara unikt i hela Azure. Ersätt<registry-name>
även med namnet på registret från föregående avsnitt.Dricks
Du kan hämta webbappens containerinställningar när som helst med kommandot
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial
. Avbildningen anges i egenskapenDOCKER_CUSTOM_IMAGE_NAME
. När webbappen distribueras via Azure DevOps- eller Azure Resource Manager-mallar kan avbildningen också visas i en egenskap med namnetLinuxFxVersion
. Båda egenskaperna har samma syfte. Om båda finns i webbappens konfigurationLinuxFxVersion
har du företräde.
VI. Konfigurera webbappen
I det här steget konfigurerar du webbappen på följande sätt:
- Konfigurera appen för att skicka begäranden till port 8000. Exempelcontainern lyssnar på port 8000 för webbbegäranden.
- Be din app att använda den hanterade identiteten för att hämta avbildningar från containerregistret.
- Konfigurera kontinuerlig distribution från containerregistret (varje avbildnings push till registret utlöser appen för att hämta den nya avbildningen). Den här delen behövs inte för att webbappen ska hämtas från containerregistret, men den kan meddela webbappen när en ny avbildning skickas till registret. Utan den måste du utlösa en avbildningshämtning manuellt genom att starta om webbappen.
Använd
az webapp config appsettings set
för att angeWEBSITES_PORT
miljövariabeln som förväntat av appkoden:az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000
Ersätt
<app-name>
med det namn som du använde i föregående steg.Aktivera den användartilldelade hanterade identiteten i webbappen
az webapp identity assign
med kommandot :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
Ersätt
<app-name>
med det namn som du använde i föregående steg.Konfigurera din app att hämta från Azure Container Registry med hjälp av hanterade identiteter.
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
Ersätt
<app-name>
med det namn som du använde i föregående steg.Ange det klient-ID som webbappen använder för att hämta från Azure Container Registry. Det här steget behövs inte om du använder den systemtilldelade hanterade identiteten.
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
Aktivera CI/CD i 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
är en URL som App Service genererar åt dig. Registret bör använda den här URL:en för att meddela App Service att en avbildnings push har inträffat. Den skapar inte webhooken åt dig.Skapa en webhook i containerregistret med hjälp av CI_CD_URL du fick från det senaste steget.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
Om du vill testa om webhooken är korrekt konfigurerad pingar du webhooken och ser om du får ett 200 OK-svar.
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"
Dricks
Om du vill se all information om alla webhook-händelser tar du bort parametern
--query
.Om du strömmar containerloggen bör du se ett
Starting container for site
meddelande efter webhookens ping eftersom webhooken utlöser att appen startas om.
VII. Bläddra till webbappen
Om du vill testa appen bläddrar du till https://<app-name>.azurewebsites.net
. Byt ut <app-name>
mot namnet på din webbapp.
Första gången du försöker komma åt appen kan det ta lite tid för appen att svara eftersom App Service måste hämta hela avbildningen från registret. Om webbläsaren överskrider tidsgränsen uppdaterar du bara sidan. När den första avbildningen har hämtats körs efterföljande tester mycket snabbare.
VIII. Få åtkomst till diagnostikloggar
Medan du väntar på att App Service ska hämta avbildningen är det bra att se exakt vad App Service gör genom att strömma containerloggarna till terminalen.
Aktivera containerloggning:
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
Aktivera loggströmmen:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
Om du inte ser konsolloggarna omedelbart kan du titta efter igen efter 30 sekunder.
Du kan även granska loggfilerna från din webbläsare via
https://<app-name>.scm.azurewebsites.net/api/logs/docker
.Om du vill stoppa loggströmningen när som helst väljer du Ctrl+C.
IX. Ändra appkoden och distribuera om
I det här avsnittet gör du en ändring i webbappkoden, återskapar avbildningen och push-överför den sedan till containerregistret. App Service hämtar sedan automatiskt den uppdaterade avbildningen från registret för att uppdatera webbappen som körs.
Öppna filen app/templates/app/index.html i den lokala mappen docker-django-webapp-linux.
Ändra det första HTML-elementet så att det matchar följande kod.
<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>
Spara dina ändringar.
Ändra till mappen docker-django-webapp-linux och återskapa avbildningen:
docker build --tag appsvc-tutorial-custom-image .
Uppdatera avbildningens tagg till
latest
:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
Byt ut
<registry-name>
mot namnet på ditt register.Skicka avbildningen till registret:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
När avbildnings push-överföringen är klar meddelar webhooken App Service om push-överföringen och App Service försöker hämta den uppdaterade avbildningen. Vänta några minuter och kontrollera sedan att uppdateringen har distribuerats genom att bläddra till
https://<app-name>.azurewebsites.net
.
X. Anslut till containern med SSH
SSH möjliggör förbättrad säkerhetskommunikation mellan en container och en klient. Om du vill aktivera en SSH-anslutning till containern måste du konfigurera din anpassade avbildning för den. När containern körs kan du öppna en SSH-anslutning.
Konfigurera containern för SSH
Exempelappen som används i den här självstudien har redan den nödvändiga konfigurationen i Dockerfile, som installerar SSH-servern och även anger inloggningsuppgifterna. Det här avsnittet är endast informationsspecifikt. Om du vill ansluta till containern går du vidare till nästa avsnitt.
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
Kommentar
Den här konfigurationen tillåter inte externa anslutningar till containern. SSH är endast tillgängligt via webbplatsen för Kudu/SCM. Kudu/SCM-webbplatsen autentiseras med ditt Azure-konto.
root:Docker!
bör inte ändras när du använder SSH. SCM/KUDU använder dina Azure Portal autentiseringsuppgifter. Om du ändrar det här värdet uppstår ett fel när du använder SSH.
Dockerfile kopierar också sshd_config-filen till mappen /etc/ssh/ och exponerar port 2222 i containern:
COPY sshd_config /etc/ssh/
# ...
EXPOSE 8000 2222
Port 2222 är en intern port som endast kan nås av containrar i bryggnätverket i ett privat virtuellt nätverk.
Slutligen startar inmatningsskriptet, init.sh, SSH-servern.
#!/bin/bash
service ssh start
Öppna SSH-anslutningen till containern
Bläddra till
https://<app-name>.scm.azurewebsites.net/webssh/host
och logga in med ditt Azure-konto. Byt ut<app-name>
mot namnet på din webbapp.När du loggar in omdirigeras du till en informationssida för webbappen. Välj SSH överst på sidan för att öppna gränssnittet och använda kommandon.
Du kan till exempel undersöka de processer som körs i appen med hjälp
top
av kommandot .
XI. Rensa resurser
De resurser som du skapade i den här artikeln kan medföra löpande kostnader. Om du vill rensa resurserna behöver du bara ta bort den resursgrupp som innehåller dem:
az group delete --name msdocs-custom-container-tutorial
Nästa steg
Vad du lärt dig:
- Distribuera en anpassad avbildning till ett privat containerregister.
- Distribuera och den anpassade avbildningen i App Service.
- Uppdatera och distribuera om avbildningen.
- Få åtkomst till diagnostikloggar.
- Anslut till containern med hjälp av SSH.
- Skicka en anpassad Docker-avbildning till Azure Container Registry.
- Distribuera den anpassade avbildningen till App Service.
- Konfigurera miljövariabler.
- Hämta avbildningen till App Service med hjälp av en hanterad identitet.
- Få åtkomst till diagnostikloggar.
- Aktivera CI/CD från Azure Container Registry till App Service.
- Anslut till containern med hjälp av SSH.
I nästa självstudie får du lära dig hur du tillhandahåller säkerhet för din app med en anpassad domän och ett certifikat.
Eller kolla in andra resurser: