Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du konfigurerar en anpassad container som ska köras på Azure App Service.
Lär dig mer om viktiga begrepp och få instruktioner för containerisering av Windows-appar i App Service. Nya användare bör först följa snabbstarten och självstudien för anpassad container.
Lär dig mer om viktiga begrepp och få instruktioner för containerisering av Linux-appar i App Service. Nya användare bör först följa snabbstart för anpassad container och sedan handledning. För sidovagnscontainrar, se Självstudie: Konfigurera en sidovagnscontainer för anpassad container i Azure App Service.
Anmärkning
Det går inte längre att använda en tjänsthuvudman för pull-autentisering av Windows-containeravbildningar. Vi rekommenderar att du använder hanterad identitet för både Windows- och Linux-containrar.
Överordnade avbildningar som stöds
Välj rätt överordnad avbildning (basavbildning) för det ramverk som du vill använda för din anpassade Windows-avbildning:
- Om du vill distribuera .NET Framework-appar använder du en överordnad avbildning baserat på Windows Server 2019 Core Long-Term Servicing Channel-versionen .
- Om du vill distribuera .NET Core-appar använder du en överordnad avbildning baserad på Windows Server 2019 Nano Annual Channel-utgåvan.
Det tar en viss tid att ladda ned en moderavbild under appstarten. Du kan minska starttiden genom att använda någon av följande överordnade avbildningar som redan är cachelagrade i Azure App Service:
- mcr.microsoft.com/windows/servercore:ltsc2022
- mcr.microsoft.com/windows/servercore:ltsc2019
-
mcr.microsoft.com/dotnet/framework/aspnet:
4.8-windowsservercore-ltsc2022 -
mcr.microsoft.com/dotnet/framework/aspnet:
4.8-windowsservercore-ltsc2019 -
mcr.microsoft.com/dotnet/runtime:
6.0-nanoserver-ltsc2022 -
mcr.microsoft.com/dotnet/runtime:
6.0-nanoserver-1809 -
mcr.microsoft.com/dotnet/aspnet:
6.0-nanoserver-ltsc2022 -
mcr.microsoft.com/dotnet/aspnet:
6.0-nanoserver-1809
Ändra Docker-avbildningen av en anpassad container
Använd följande kommando för att ändra den aktuella Docker-avbildningen till en ny avbildning i en befintlig anpassad container:
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <docker-hub-repo>/<image>
Använda en avbildning från ett privat register
Om du vill använda en avbildning från ett privat register, till exempel Azure Container Registry, kör du följande kommando:
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <image-name> --docker-registry-server-url <private-repo-url> --docker-registry-server-user <username> --docker-registry-server-password <password>
Ange inloggningsuppgifterna för ditt privata registerkonto i fälten \<username> och \<password> .
Använda hanterad identitet för att hämta en avbildning från Azure Container Registry
Använd följande steg för att konfigurera webbappen att hämta från Azure Container Registry med hjälp av hanterad identitet. Stegen använder systemtilldelad hanterad identitet, men du kan också använda användartilldelad hanterad identitet.
Aktivera den systemtilldelade hanterade identiteten för webbappen
az webapp identity assignmed hjälp av kommandot :az webapp identity assign --resource-group <group-name> --name <app-name> --query principalId --output tsvErsätt <appnamn> med namnet du använde i föregående steg. Utdata från kommandot, filtrerat efter argumenten
--queryoch--output, är tjänstens huvudnamns-ID för den tilldelade identiteten.Hämta resurs-ID:t för ditt containerregister:
az acr show --resource-group <group-name> --name <registry-name> --query id --output tsvErsätt <registernamn> med namnet på registret. Utdata från kommandot, filtrerat efter argumenten
--queryoch--output, är resurs-ID för containerregistret.Ge den hanterade identiteten behörighet att komma åt containerregistret:
az role assignment create --assignee <principal-id> --scope <registry-resource-id> --role "AcrPull"Ersätt följande variabelvärden:
-
<principal-id> med tjänstens huvudnamns-ID från kommandot
az webapp identity assign -
<registry-resource-id> med ID:t för containerregistret från kommandot
az acr show
Mer information om dessa behörigheter finns i Vad är rollbaserad åtkomstkontroll i Azure?.
-
<principal-id> med tjänstens huvudnamns-ID från kommandot
Konfigurera din app så att den använder den hanterade identiteten för att hämta från Azure Container Registry.
az webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUseManagedIdentityCreds": true}'Ersätt följande variabelvärden:
- <appnamn> med namnet på din webbapp.
Tips
Om du använder PowerShell-konsolen för att köra kommandona kan du fly från strängarna i argumentet
--generic-configurationsi det här steget och nästa steg. Till exempel:--generic-configurations '{\"acrUseManagedIdentityCreds\": true'.(Valfritt) Om din app använder en användartilldelad hanterad identitet kontrollerar du att identiteten har konfigurerats i webbappen och anger
acrUserManagedIdentityIDsedan egenskapen för att ange dess klient-ID:az identity show --resource-group <group-name> --name <identity-name> --query clientId --output tsvErsätt
<identity-name>för din användartilldelade hanterade identitet och använd utdata<client-id>för att konfigurera ID:t för den användartilldelade hanterade identiteten.az webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUserManagedIdentityID": "<client-id>"}'
Webbappen använder nu hanterad identitet för att hämta från Azure Container Registry.
Använda en avbildning från ett nätverksskyddat register
Om du vill ansluta och hämta från ett register i ett virtuellt nätverk eller lokalt måste din app integreras med ett virtuellt nätverk. Du behöver också integrering av virtuella nätverk för Azure Container Registry med en privat slutpunkt. När du har konfigurerat nätverket och DNS-upplösningen aktiverar du dirigeringen av bildhämtningen genom det virtuella nätverket. Konfigurera webbplatsinställningen vnetImagePullEnabled :
az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.vnetImagePullEnabled [true|false]
Felsöka vad du ska göra om du inte ser den uppdaterade containern
Om du ändrar inställningarna för Docker-containern så att de pekar på en ny container kan det ta några minuter innan appen hanterar HTTP-begäranden från den nya containern. Medan den nya containern hämtas och startas fortsätter App Service att hantera begäranden från den gamla containern. App Service skickar endast begäranden till den nya containern när den har startats och är redo att ta emot begäranden.
Lär dig hur containeravbildningar lagras
Första gången du kör en anpassad Docker-avbildning i App Service kommer kommandot docker pull att utföras av App Service och alla avbildningslager kommer att hämtas. Lagren lagras på disken, på samma sätt som när du använder Docker lokalt. Varje gång appen startas om utför docker pull App Service kommandot . Den hämtar bara de lager som har ändrats. Om inga ändringar görs använder App Service befintliga lager på den lokala disken.
Om appen ändrar beräkningsinstanser av någon anledning (som att ändra prisnivåer) måste App Service hämta alla lager igen. Detsamma gäller om du skalar ut för att lägga till fler instanser. I sällsynta fall kan appinstanserna ändras utan en skalningsoperation.
Konfigurera portnummer
Som standard förutsätter App Service att din anpassade container lyssnar på port 80. Om containern lyssnar på en annan port anger du appinställningen WEBSITES_PORT i App Service-appen. Du kan ange det med hjälp av Azure Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_PORT=8000
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_PORT"="8000"}
Med App Service kan din container för närvarande endast exponera en port för HTTP-begäranden.
Konfigurera miljövariabler
Din anpassade container kan använda miljövariabler som du behöver ange externt. Du kan skicka in dem med hjälp av Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings DB_HOST="myownserver.mysql.database.azure.com"
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"DB_HOST"="myownserver.mysql.database.azure.com"}
När appen körs matas App Service-appinställningarna automatiskt in i processen som miljövariabler. Du kan verifiera miljövariabler för containrar med URL:en https://<app-name>.scm.azurewebsites.net/Env.
När du SSH till en container med anpassade Docker-avbildningar kanske du bara ser några miljövariabler om du försöker använda kommandon som env eller printenv. Om du vill se alla miljövariabler i containern, som de som du skickar in till ditt program för körningsanvändning, lägger du till den här raden i ditt entrypoint-skript:
eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)
Se ett fullständigt exempel.
Om appen använder avbildningar från ett privat register eller från Docker Hub sparas autentiseringsuppgifterna för åtkomst till lagringsplatsen i miljövariablerna: DOCKER_REGISTRY_SERVER_URL, DOCKER_REGISTRY_SERVER_USERNAMEoch DOCKER_REGISTRY_SERVER_PASSWORD. På grund av säkerhetsrisker exponeras inget av dessa reserverade variabelnamn för programmet.
För IIS-containrar (Internet Information Services) eller .NET Framework-containrar (4.0 eller senare) matas autentiseringsuppgifter automatiskt in i System.ConfigurationManager som .NET-appinställningar och anslutningssträngar av App Service. För alla andra språk eller ramverk tillhandahålls de som miljövariabler för processen, med något av följande prefix:
APPSETTING_SQLCONTR_MYSQLCONTR_SQLAZURECOSTR_POSTGRESQLCONTR_CUSTOMCONNSTR_
Du kan använda den här metoden för både appar med en container eller flera containrar, där miljövariablerna anges i docker-compose.yml filen.
Använda beständig delad lagring
Du kan använda C:\home katalogen i ditt anpassade containerfilsystem för att spara filer mellan omstarter och dela dem mellan instanser. När du använder C:\home katalogen kan din anpassade container komma åt beständig lagring.
När beständig lagring är inaktiverad sparas inte skrivningar till C:\home katalogen mellan appomstarter eller flera instanser. När beständig lagring är aktiverat sparas alla skrivningar till C:\home katalogen. Alla instanser av en skalad ut app kan ha åtkomst till dem. När containern startar skriver de över allt innehåll i C:\home containerns katalog om det finns några filer på den beständiga lagringen.
Det enda undantaget är C:\home\LogFiles katalogen. Den här katalogen lagrar container- och programloggarna. Mappen bevaras alltid när appen startas om om programloggning är aktiverad med alternativet Filsystem , oavsett om beständig lagring är aktiverat eller inte. När du aktiverar eller inaktiverar beständig lagring påverkar det med andra ord inte programmets loggningsbeteende.
Som standard är beständig lagring aktiverat i windows anpassade containrar. Om du vill inaktivera det anger du värdet för appinställningen WEBSITES_ENABLE_APP_SERVICE_STORAGE med false hjälp av Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=false
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=false}
Du kan använda /home katalogen i ditt anpassade containerfilsystem för att spara filer mellan omstarter och dela dem mellan instanser. När du använder C:\home katalogen kan din anpassade container komma åt beständig lagring. Tänk på att data som du sparar inom /home bidrar till den lagringskvot som ingår i din App Service-plan.
När beständig lagring är inaktiverad sparas inte skrivningar till C:\home katalogen mellan appomstarter eller flera instanser. När beständig lagring är aktiverat sparas alla skrivningar till C:\home katalogen. Alla instanser av en skalad ut app kan ha åtkomst till dem. När containern startar skriver de över allt innehåll i C:\home containerns katalog om det finns några filer på den beständiga lagringen.
Det enda undantaget är C:\home\LogFiles katalogen. Den här katalogen lagrar container- och programloggarna. Mappen bevaras alltid när appen startas om om programloggning är aktiverad med alternativet Filsystem , oavsett om beständig lagring är aktiverat eller inte. När du aktiverar eller inaktiverar beständig lagring påverkar det med andra ord inte programmets loggningsbeteende.
Vi rekommenderar att du skriver data till /home eller en monterad Azure-lagringssökväg. Data som du skriver utanför dessa sökvägar är inte beständiga under omstarter. Data sparas till plattformshanterat värddiskutrymme som är separat från Fillagringskvoten för App Service-planer.
Som standard inaktiveras beständig lagring på anpassade Linux-containrar. Om du vill aktivera det, använd Cloud Shell för att ställa in värdet på appinställningen till true. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=true
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=true}
Anmärkning
Du kan också konfigurera din egen beständiga lagring.
Identifiera HTTPS-sessionen
App Service avslutar TLS vid frontändarna. Det innebär att TLS-begäranden aldrig kommer till din app. Du behöver inte och bör inte implementera något stöd för TLS i din app.
Frontend-komponenterna finns inne i Azure-datacenter. Om du använder TLS med din app krypteras alltid trafiken via Internet på ett säkert sätt.
Anpassa ASP.NET maskinnyckelinmatning
Under containerstarten genereras nycklar automatiskt och matas in i containern som datornycklar för ASP.NET kryptografiska rutiner. Du hittar dessa nycklar i containern genom att leta efter följande miljövariabler: MACHINEKEY_Decryption, MACHINEKEY_DecryptionKey, MACHINEKEY_ValidationKeyoch MACHINEKEY_Validation.
De nya nycklarna vid varje omstart kan återställa ASP.NET formulärautentisering och visningstillstånd, om din app är beroende av dem. Om du vill förhindra automatisk återställning av nycklar anger du dem manuellt som App Service-appinställningar.
Ansluta till containern
Om du vill ansluta till din Windows-container direkt för diagnostikuppgifter går du till https://<app-name>.scm.azurewebsites.net/ och väljer alternativet SSH. Det här alternativet etablerar en direkt SSH-session där du kan köra kommandon i containern.
- Den fungerar separat från den grafiska webbläsaren ovanför den, som bara visar filerna i din delade lagring.
- I en utskalad app ansluter SSH-sessionen till en av containerinstanserna. Du kan välja en annan instans från listrutan Instans i den översta Kudu-menyn.
- Förutom ändringar i det delade lagringsutrymmet sparas inte alla ändringar som du gör i containern inifrån SSH-sessionen när appen startas om. Dessa ändringar är inte en del av Docker-avbildningen. Om du vill spara ändringar som registerinställningar och programvaruinstallation gör du dem till en del av Dockerfile.
Få åtkomst till diagnostikloggar
App Service loggar åtgärder utförda av Docker-värden och aktiviteter inifrån containern. Loggar från Docker-värden (plattformsloggar) är aktiverade som standard. Du måste aktivera programloggar eller webbserverloggar manuellt inifrån containern. Mer information finns i Aktivera programloggning och Aktivera webbserverloggning.
Du kan komma åt Docker-loggar på flera sätt:
Azure-portalen
Docker-loggar visas i Azure-portalen i fönstret Containerinställningar i din app. Loggarna är avkortade. Om du vill ladda ned alla loggar väljer du Ladda ned.
Kudu
Om du vill se de enskilda loggfilerna går du till https://<app-name>.scm.azurewebsites.net/DebugConsole och väljer LogFiles mappen. Om du vill ladda ned hela LogFiles katalogen väljer du ikonen Ladda ned till vänster om katalognamnet. Du kan också komma åt den här mappen med hjälp av en FTP-klient.
Som standard kan du inte komma åt C:\home\LogFiles mappen i SSH-terminalen eftersom beständig delad lagring inte är aktiverad. Aktivera beständig delad lagring om du vill aktivera det här beteendet i konsolterminalen.
Om du försöker ladda ned Docker-loggen som för närvarande används med hjälp av en FTP-klient kan du få ett fel på grund av ett fillås.
Kudu API
Gå direkt till https://<app-name>.scm.azurewebsites.net/api/logs/docker för att se metadata för Docker-loggarna. Du kan se fler än en loggfil i listan. Du kan använda egenskapen href för att ladda ned loggfilen direkt.
Om du vill ladda ned alla loggar tillsammans i en ZIP-fil öppnar du https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip.
Anpassa containerminne
Som standard har alla Windows-containrar som distribuerats i Azure App Service en konfigurerad minnesgräns. I följande tabell visas standardinställningarna per App Service-plan-SKU.
| SKU för App Service-plan | Standardminnesgräns per app (i MB) |
|---|---|
| P1v3 | 1024 |
| P1Mv3 | 1024 |
| P2v3 | 1536 |
| P2Mv3 | 1536 |
| P3v3 | 2048 |
| P3Mv3 | 2048 |
| P4Mv3 | 2560 |
| P5Mv3 | 3072 |
Du kan ändra det här värdet genom att ange appinställningen WEBSITE_MEMORY_LIMIT_MB i Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_MEMORY_LIMIT_MB=2000
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_MEMORY_LIMIT_MB"=2000}
Värdet definieras i MB och måste vara mindre än eller lika med värdmaskinens totala fysiska minne. I till exempel en App Service-plan med 8 GB RAM-minne får den kumulativa summan WEBSITE_MEMORY_LIMIT_MB för alla appar inte överstiga 8 GB. Mer information om hur mycket minne som är tillgängligt finns i Premium v3-tjänstplanen i App Service-priser.
Anpassa antalet beräkningskärnor
Som standard körs en Windows-container med alla tillgängliga kärnor för din prisnivå. Du kanske vill minska antalet kärnor som ditt mellanlagringsfack använder. Om du vill minska antalet kärnor som en container använder anger du appinställningen WEBSITE_CPU_CORES_LIMIT till det önskade antalet kärnor. Du kan ange det med hjälp av Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --slot staging --settings WEBSITE_CPU_CORES_LIMIT=1
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_CPU_CORES_LIMIT"=1}
Tips
Om du uppdaterar appinställningen utlöses automatisk omstart, vilket orsakar minimal stilleståndstid. För en produktionsapp bör du överväga att byta ut den till en mellanlagringsplats. Ändra appinställningen i staging-slotten och flytta den sedan tillbaka till produktion.
Om du vill verifiera ditt justerade nummer öppnar du en SSH-session med hjälp av Azure-portalen eller Kudu-portalen (https://<app-name>.scm.azurewebsites.net/webssh/host). Ange följande kommandon med hjälp av PowerShell. Varje kommando returnerar ett tal.
Get-ComputerInfo | ft CsNumberOfLogicalProcessors # Total number of enabled logical processors. Disabled processors are excluded.
Get-ComputerInfo | ft CsNumberOfProcessors # Number of physical processors.
Processorerna kan vara processorer med flera kärnor eller hypertrådning. Information om hur många kärnor som är tillgängliga finns i Premium v3-tjänstplanen i App Service-priser.
Anpassa beteende för hälsoping
App Service anser att en container har startats när containern startar och svarar på en HTTP-ping. Begäran om hälsoping innehåller rubriken User-Agent= "App Service Hyper-V Container Availability Check". Om containern startar men inte svarar på ping efter en viss tid loggar App Service en händelse i Docker-loggen.
Om ditt program är resursintensivt kanske containern inte svarar på HTTP-pingen i tid. Om du vill styra vad som händer när HTTP-ping misslyckas anger du appinställningen CONTAINER_AVAILABILITY_CHECK_MODE . Du kan ange det med hjälp av Cloud Shell. Använd följande kommando i Bash:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings CONTAINER_AVAILABILITY_CHECK_MODE="ReportOnly"
Använd följande kommando i PowerShell:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"CONTAINER_AVAILABILITY_CHECK_MODE"="ReportOnly"}
Följande tabell visar möjliga värden:
| Värde | Description |
|---|---|
Repair |
Starta om containern efter tre på varandra följande tillgänglighetskontroller. |
ReportOnly |
Standardvärdet. Rapportera containern i Docker-loggarna efter tre på varandra följande tillgänglighetskontroller, men starta inte om den. |
Off |
Sök inte efter tillgänglighet. |
Stöd för grupphanterade tjänstkonton
Grupphanterade tjänstkonton stöds inte i Windows-containrar i App Service.
Aktivera SSH
Du kan använda Secure Shell (SSH) för att fjärrköra administrativa kommandon från en kommandoradsterminal. Följ dessa steg för att aktivera SSH-konsolfunktionen i Azure-portalen med anpassade containrar:
Skapa en standardfil
sshd_configmed följande exempelinnehåll och placera den i programprojektets rotkatalog:Port 2222 ListenAddress 0.0.0.0 LoginGraceTime 180 X11Forwarding yes Ciphers aes128-cbc,3des-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr MACs hmac-sha1,hmac-sha1-96 StrictModes yes SyslogFacility DAEMON PasswordAuthentication yes PermitEmptyPasswords no PermitRootLogin yes Subsystem sftp internal-sftpAnmärkning
Den här filen konfigurerar OpenSSH och måste innehålla följande objekt för att uppfylla azure-portalens SSH-funktion:
- Värdet
Portmåste anges till2222. - Värdena
Ciphersmåste innehålla minst ett objekt i den här listan:aes128-cbc,3des-cbcelleraes256-cbc. - Värdena
MACsmåste innehålla minst ett objekt i den här listan:hmac-sha1ellerhmac-sha1-96.
- Värdet
Skapa ett entrypoint-skript med namnet
entrypoint.sheller ändra en befintlig postpunktsfil. Lägg till kommandot för att starta SSH-tjänsten tillsammans med programmets startkommando. I följande exempel visas hur du startar ett Python-program. Ersätt det sista kommandot enligt projektspråket eller stacken:Lägg till följande instruktioner i Dockerfile enligt basbildens distribution. Dessa instruktioner kopierar de nya filerna, installerar OpenSSH-servern, anger rätt behörigheter och konfigurerar den anpassade startpunkten och exponerar de portar som krävs av programmet respektive SSH-servern:
COPY entrypoint.sh ./ # Start and enable SSH RUN apt-get update \ && apt-get install -y --no-install-recommends dialog \ && apt-get install -y --no-install-recommends openssh-server \ && echo "root:Docker!" | chpasswd \ && chmod u+x ./entrypoint.sh COPY sshd_config /etc/ssh/ EXPOSE 8000 2222 ENTRYPOINT [ "./entrypoint.sh" ]Anmärkning
Rotlösenordet måste vara exakt
Docker!eftersom App Service använder det för att ge dig åtkomst till SSH-sessionen med containern. Den här konfigurationen tillåter inte externa anslutningar till containern. Containerporten2222är endast tillgänglig i bryggnätverket i ett privat virtuellt nätverk. En angripare på Internet kan inte komma åt den.Återskapa och push-överför Docker-avbildningen till registret och testa sedan funktionen Web App SSH i Azure-portalen.
Mer felsökningsinformation finns i Azure App Service-bloggen: Aktivera SSH på en Linux-webbapp för containrar.
Få åtkomst till diagnostikloggar
Du kan komma åt konsolloggarna som genereras inifrån containern.
Om du vill aktivera containerloggning kör du följande kommando:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
<app-name> Ersätt värdena och <resource-group-name> med namn som är lämpliga för din webbapp.
När du har aktiverat containerloggning kör du följande kommando för att se loggströmmen:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Om konsolloggarna inte visas omedelbart kontrollerar du igen om 30 sekunder.
Om du vill stoppa loggströmningen när som helst använder du kortkommandot Ctrl+C.
Konfigurera appar med flera containrar
Anmärkning
Docker Compose-funktionen kommer att dras tillbaka den 31 mars 2027. Sidvagnscontainrar ersätter appar med flera containrar i App Service. För nya tjänster, se Självstudie: Konfigurera en sidecar-container för anpassad container i Azure App Service. För befintliga appar med flera containrar i App Service, se Migrera dina Docker Compose-program till sidovagnsfunktionen.
- Använda beständig lagring i Docker Compose
- Förhandsversionsbegränsningar
- Alternativ för Docker Compose
Använda beständig lagring i Docker Compose
Appar med flera containrar som WordPress behöver beständig lagring för att fungera korrekt. För att aktivera beständig lagring måste docker Compose-konfigurationen peka på en lagringsplats utanför containern. Lagringsplatser i containern bevarar inte ändringar efter omstart av appen.
Om du vill aktivera beständig lagring anger du inställningen WEBSITES_ENABLE_APP_SERVICE_STORAGE app.
az webapp config appsettings set Använd kommandot i Cloud Shell.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE
I din docker-compose.yml-fil, mappa alternativet volumes till ${WEBAPP_STORAGE_HOME}.
WEBAPP_STORAGE_HOME är en miljövariabel i App Service som mappar till beständig lagring för din app. Till exempel:
wordpress:
image: <image name:tag>
volumes:
- "${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html"
- "${WEBAPP_STORAGE_HOME}/phpmyadmin:/var/www/phpmyadmin"
- "${WEBAPP_STORAGE_HOME}/LogFiles:/var/log"
Begränsningar i förhandsversionen
Multicontainer är för närvarande i förhandsversion. Följande App Service-plattformsfunktioner stöds inte:
- Autentisering eller auktorisering.
- Hanterade identiteter.
- Resursdelning mellan ursprung (CORS).
- Integrering av virtuella nätverk med Docker Compose-scenarier.
Docker Compose i Azure App Service har för närvarande en gräns på 4 000 tecken.
Alternativ för Docker Compose
Följande avsnitt visar konfigurationsalternativ för Docker Compose som stöds och inte stöds.
Alternativ som stöds
commandentrypointenvironmentimageportsrestartservices-
volumes(Mappning till Azure Storage stöds inte)
Alternativ som inte stöds
-
build(tillåts inte) -
depends_on(ignoreras) -
networks(ignoreras) -
secrets(ignoreras) - Andra portar än
80och8080(ignoreras) - Standardmiljövariabler som
$variableoch${variable}(till skillnad från i Docker)
Syntaxbegränsningar
- Den första YAML-instruktionen i filen måste alltid vara
version x.x. - Portavsnittet måste använda citerade tal.
- Avsnittet
image > volumemåste anges och kan inte ha behörighetsdefinitioner. - Avsnittet volymer kan inte innehålla en tom klammerparentes efter volymnamnet.
Anmärkning
Andra alternativ som inte uttryckligen nämns ignoreras i förhandsversionen.
Ignorera robots933456-meddelandet i loggar
Du kan se följande meddelande i containerloggarna:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Du kan ignorera det här meddelandet.
/robots933456.txt är en dummy-URL-sökväg. App Service använder den för att kontrollera om containern kan hantera begäranden. Ett "404"-felsvar anger att sökvägen inte finns och signalerar till App Service att containern är felfri och redo att svara på begäranden.