Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure App Service biedt vooraf gedefinieerde toepassingsstacks, zoals ASP.NET of Node.js, op Windows. Deze toepassingsstacks worden uitgevoerd op IIS. De vooraf geconfigureerde Windows-omgeving beveiligt het besturingssysteem tegen:
- Beheerderstoegang.
- Software-installaties.
- Wijzigingen in de algemene assemblycache.
Zie De functionaliteit van het besturingssysteem in App Service voor meer informatie.
U kunt een aangepaste, geconfigureerde Windows-image implementeren vanuit Visual Studio om wijzigingen in het besturingssysteem aan te brengen die uw app nodig heeft. Hierdoor kunt u eenvoudig een on-premises app migreren waarvoor een aangepaste besturingssysteem- en softwareconfiguratie is vereist. Deze zelfstudie laat zien hoe u een ASP.NET-app naar App Service migreert die aangepaste lettertypen gebruikt die zijn geïnstalleerd in de Windows-lettertypenbibliotheek. U implementeert met Visual Studio een aangepaste, geconfigureerde Windows-installatiekopie naar Azure Container Registry en voert deze vervolgens uit in App Service.
Vereisten
- Meld u aan voor een Docker Hub-account.
- Installeer Docker voor Windows.
- Configureer Docker om Windows-containers uit te voeren.
-
Installeer Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkloads en Azure-ontwikkelworkloads . Als u Visual Studio 2022 al hebt geïnstalleerd:
- Installeer de nieuwste updates in Visual Studio door Help>Controleren op updates te selecteren.
- Voeg de workloads toe in Visual Studio door Extra>Hulpprogramma's en onderdelen ophalen te selecteren.
De app lokaal instellen
Download het voorbeeld
In deze stap stelt u het lokale .NET-project in.
- Downloaden het voorbeeldproject.
- Pak het custom-font-win-container-master.zip-bestand uit.
Het voorbeeldproject bevat een eenvoudige ASP.NET toepassing die gebruikmaakt van een aangepast lettertype dat is geïnstalleerd in de Windows-lettertypebibliotheek. Het is niet nodig om lettertypen te installeren. Het voorbeeld is echter een voorbeeld van een app die is geïntegreerd met het onderliggende besturingssysteem. Om een dergelijke app naar App Service te migreren, wijzigt u uw code om de integratie te verwijderen of migreert u de app ongewijzigd in een aangepaste Windows-container.
Installeer het lettertype
Ga in Windows Verkenner naar custom-font-win-container-master/CustomFontSample, klik met de rechtermuisknop op FrederickatheGreat-Regular.ttf en selecteer Install.
Dit lettertype is openbaar beschikbaar via Google Fonts.
Start de app
Open het bestand custom-font-win-container-master/CustomFontSample.sln in Visual Studio.
Selecteer Ctrl+F5 om de app uit te voeren zonder foutopsporing. De app wordt weergegeven in de standaardbrowser.
Omdat de app gebruikmaakt van een geïnstalleerd lettertype, kan de app niet worden uitgevoerd in de App Service-sandbox. U kunt deze echter implementeren met behulp van een Windows-container, omdat u het lettertype in de Windows-container kunt installeren.
Windows-container configureren
Klik in Solution Explorer met de rechtermuisknop op het project CustomFontSample en selecteer Toevoegen>Containerorkestratieondersteuning.
Selecteer Docker Compose>OK.
Uw project is nu ingesteld op uitvoering in een Windows-container. Er wordt een Dockerfile toegevoegd aan het CustomFontSample-project en er wordt een docker-compose-project toegevoegd aan de oplossing.
Open Dockerfile vanuit Solution Explorer.
U moet een ondersteunde bovenliggende image gebruiken. Wijzig de bovenliggende image door de regel FROM te vervangen door de volgende code:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Voeg de volgende regel toe aan het einde van het bestand en sla het bestand op:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
U kunt InstallFont.ps1 vinden in het project CustomFontSample. Het is een eenvoudig script waarmee het lettertype wordt geïnstalleerd. U vindt een complexere versie van het script in de PowerShell Gallery.
Opmerking
Als u de Windows-container lokaal wilt testen, controleert u of Docker is gestart op uw lokale computer.
Publiceren naar Azure Container Registry
Azure Container Registry kan uw images opslaan voor containerdeployments. U kunt App Service configureren voor het gebruik van containerinstallatiekopieën die worden gehost in Container Registry.
Het venster Publiceren openen
Klik in Solution Explorer met de rechtermuisknop op het project CustomFontSample en selecteer Publiceren.
De registratie maken en publiceren
Selecteer in het venster PublicerenAzure en selecteer vervolgens Volgende.
Selecteer Azure Container Registry en selecteer vervolgens Volgende.
Selecteer het abonnement waarin u het containerregister wilt publiceren en selecteer vervolgens Nieuw maken.
Aanmelden met een Azure-account
Selecteer een account toevoegen in het venster Azure Container Registry en meld u vervolgens aan bij uw Azure-abonnement. Als u al bent aangemeld, selecteert u het account met het gewenste abonnement in de vervolgkeuzelijst.
De registerdatabase configureren
Configureer de nieuwe container registry met behulp van de voorgestelde waarden in de volgende tabel als richtlijn. Wanneer u klaar bent, selecteert u Aanmaken.
| Instelling | Voorgestelde waarde |
|---|---|
| DNS-voorvoegsel | Behoud de gegenereerde registernaam of wijzig deze in een andere unieke naam. |
| Resourcegroep | Selecteer Nieuw, voer myResourceGroup in en selecteer VERVOLGENS OK. |
| SKU | Basic. Zie Prijscategorieën voor meer informatie. |
| Locatie van register | West-Europa |
Klik op Voltooien.
Er wordt een terminalvenster geopend en de voortgang van de uitrol van de image wordt weergegeven. Wacht totdat de implementatie is voltooid.
Aanmelden bij Azure
Meld u aan bij het Azure-portaal.
Een webtoepassing maken
Selecteer Een resource maken en selecteer vervolgens Maken onder Web-app.
Appbasis configureren
Configureer de instellingen op het tabblad Basis met behulp van de volgende tabel als richtlijn.
| Instelling | Voorgestelde waarde |
|---|---|
| Abonnement | Zorg ervoor dat het correcte abonnement is geselecteerd. |
| Resourcegroep | Selecteer Nieuwe maken, voer myResourceGroup in en selecteer VERVOLGENS OK. |
| Naam | Voer een unieke naam in. De URL van de web-app is https://<app-name>.azurewebsites.net, waarbij <app-name> de naam van uw app is. |
| Publiceren | Container |
| Besturingssysteem | Windows |
| Regio | West-Europa |
| Windows Plan | Selecteer Nieuw maken, voer myAppServicePlan in en selecteer vervolgens OK. |
Het tabblad Basis moet er ongeveer als volgt uitzien:
De Windows-container configureren
Configureer uw aangepaste Windows-container op het tabblad Container, zoals weergegeven in de volgende tabel, en selecteer vervolgens Beoordelen en maken.
| Instelling | Voorgestelde waarde |
|---|---|
| Bron van afbeelding | Azure Container Registry |
| Register | Selecteer de registerinstantie die u eerder hebt gemaakt. |
| Image | customfontsample |
| Tag | nieuwste |
Het maken van de app voltooien
Selecteer Maken en wacht tot azure de vereiste resources heeft gemaakt.
Ga naar de webapp
Wanneer de implementatie is voltooid, wordt er een meldingsbericht weergegeven:
Selecteer Naar resource.
Selecteer op de app-pagina de koppeling onder URL.
Er wordt een nieuwe browserpagina geopend met de volgende pagina:
Wacht enkele minuten en probeer het opnieuw totdat u de startpagina krijgt met het lettertype dat u verwacht:
Gefeliciteerd! U hebt een ASP.NET-toepassing gemigreerd naar App Service in een Windows-container.
De opstartlogboeken van de container weergeven
Het kan enige tijd duren voordat de Windows-container is geladen. Als u de voortgang wilt zien, gaat u naar de volgende URL. (Vervang <app-name> door de naam van uw app.)
https://<app-name>.scm.azurewebsites.net/api/logstream
De gestreamde logboeken zien er als volgt uit:
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 maakt gebruik van Docker-containertechnologie om zowel ingebouwde images als aangepaste images te hosten. Als u een lijst met ingebouwde installatiekopieën wilt zien, voert u de Azure CLI-opdracht az webapp list-runtimes --os linux uit. Als deze installatiekopieën niet voldoen aan uw behoeften, kunt u een aangepaste installatiekopie bouwen en implementeren.
Opmerking
Uw container moet zich richten op de x86-64-architectuur. ARM64 wordt niet ondersteund.
In deze zelfstudie leert u het volgende:
- Push een aangepaste Docker-image naar Azure Container Registry.
- Implementeer de aangepaste image naar App Service.
- Omgevingsvariabelen configureren.
- Haal de image op in App Service met behulp van een beheerde identiteit.
- Open diagnostische logboeken.
- Schakel CI/CD in van Container Registry naar App Service.
- Maak verbinding met de container met behulp van SSH.
Voor het voltooien van deze zelfstudie worden kleine kosten in rekening gebracht in uw Azure-account voor de containerregistry en kunnen er meer kosten in rekening worden gebracht als u de container langer dan een maand host.
Uw eerste omgeving instellen
Voor deze zelfstudie is versie 2.0.80 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
- Zorg ervoor dat u een Azure-account met een actief abonnement hebt. Maak gratis een account aan.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Installeer Docker. Dit gebruikt u om Docker-images te bouwen. Voor het installeren van Docker kan het nodig zijn de computer opnieuw op te starten.
Nadat u Docker hebt geïnstalleerd, opent u een terminalvenster en controleert u of de docker is geïnstalleerd:
docker --version
De voorbeeld-app klonen of downloaden
U kunt het voorbeeld voor deze zelfstudie verkrijgen via git-kloon of download.
Kloon de repository met behulp van Git Bash
Kloon de voorbeeldrepository:
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Zorg ervoor dat u het --config core.autocrlf=input argument opneemt om de juiste regeleinden te garanderen in bestanden die in de Linux-container worden gebruikt.
Navigeer vervolgens naar de map:
cd docker-django-webapp-linux
Download de ZIP van GitHub
In plaats van git-kloon te gebruiken, kunt u naar https://github.com/Azure-Samples/docker-django-webapp-linuxCode>Local>Download ZIP gaan en selecteren.
Pak het ZIP-bestand uit in een map met de naam docker-django-webapp-linux.
Open vervolgens een terminalvenster in de map docker-django-webapp-linux .
Bereid de monstercontainer voor
De nieuwere browserterminal en az webapp exec bieden geauthenticeerde toegang tot draaiende Linux-containers zonder dat er een SSH-server of een ingebed SSH-wachtwoord in de image nodig is. Legacy Kudu WebSSH en az webapp ssh toegang vereisen mogelijk nog steeds een SSH-server. De voorbeeldrepository bevat een legacy SSH-setup. Vervang voordat je bouwt de inhoud van de Dockerfile door de volgende app-only configuratie:
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"]
Vervang de inhoud van init.sh door het volgende script, waarbij je de Linux-regeluitgangen behoudt:
#!/bin/bash
set -e
exec python /code/manage.py runserver 0.0.0.0:8000
Verwijder het legacy sshd_config-bestand uit je lokale voorbeeldmap zodat ADD . /code/ het niet naar de image kopieert.
De Dockerfile installeert de afhankelijkheden van de app, kopieert de app en het opstartscript, en stelt de poort van de applicatie beschikbaar. De entrypoint start alleen de Python-applicatie. Deze wijzigingen verwijderen de SSH-installatie en inloggegevens van het voorbeeld. De afbeelding bevat /bin/bash voor de nieuwere browserterminal en de standaardshell az webapp exec .
De image lokaal bouwen en testen
Opmerking
Docker Hub legt quota op voor het aantal anonieme pulls per IP en het aantal geauthenticeerde pulls per gratis gebruiker. Als u merkt dat uw pulls van Docker Hub beperkt zijn, kunt u proberen uit te voeren docker login als u nog niet bent aangemeld.
Voer de volgende opdracht uit om de image te bouwen:
docker build --tag appsvc-tutorial-custom-image .Test of de build werkt door de Docker-container lokaal uit te voeren:
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageMet deze
docker runopdracht geeft u de poort op met behulp van het-pargument en wordt de naam van de installatiekopie opgenomen. Met-itkunt u het stoppen met Ctrl+C.Tip
Als u Windows gebruikt en de fout *standard_init_linux.go:211: exec user process caused "no such file or directory" ziet, bevat het init.sh-bestand CRLF-regeleinden in plaats van de verwachte LF-einden. Deze fout treedt op als u Git hebt gebruikt om de voorbeeldopslagplaats te klonen, maar de parameter
--config core.autocrlf=inputhebt weggelaten. In dit geval kloont u de repository opnieuw met het--config-argument. U ziet de fout mogelijk ook als u init.sh hebt bewerkt en vervolgens hebt opgeslagen met CRLF-einden. In dit geval slaat u het bestand opnieuw op met alleen LF-einden.Blader naar
http://localhost:8000om te controleren of de web-app en de container correct werken.
Een door de gebruiker toegewezen beheerde identiteit maken
App Service kan een standaard beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit gebruiken om zich te authenticeren bij een containeregistry. In deze zelfstudie gebruikt u een door de gebruiker toegewezen beheerde identiteit.
Voer de opdracht az group create uit om een resourcegroep te maken:
az group create --name msdocs-custom-container-tutorial --location westeuropeU kunt de waarde
--locationwijzigen om een regio bij u in de buurt op te geven.Maak een beheerde identiteit in de resourcegroep:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
Een containerregistry maken
Maak een containerregister met behulp van de volgende
az acr createopdracht. Vervang<registry-name>door een unieke naam voor uw registerdatabase. De naam mag alleen letters en cijfers bevatten en moet uniek zijn in heel Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled trueMet de parameter
--admin-enabledkunt u images naar de registry pushen met behulp van beheerdersreferenties.Haal de beheerdersgegevens op door de
az credential acr showopdracht uit te voeren:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>De JSON-uitvoer van deze opdracht bevat twee wachtwoorden samen met de gebruikersnaam van het register.
Push de voorbeeldimage naar Container Registry
In deze sectie pusht u de image naar Container Registry, die later door App Service wordt gebruikt.
Gebruik vanuit de lokale terminal waar u de voorbeeldimage hebt gemaakt de
docker loginopdracht om u aan te melden bij de containerregistry:docker login <registry-name>.azurecr.io --username <registry-username>Vervang
<registry-name>en<registry-username>door waarden uit de vorige stappen. Wanneer u hierom wordt gevraagd, typt u een van de wachtwoorden uit de vorige sectie.Gebruik dezelfde registernaam in alle resterende stappen van deze sectie.
Wanneer de aanmelding is geslaagd, tagt u uw lokale Docker-image in de registry:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestGebruik de opdracht
docker pushom de image naar de registry te pushen:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestDe eerste keer dat u de image uploadt, kan dit enkele minuten duren, omdat deze upload de basisimage bevat. De volgende uploads zijn doorgaans sneller.
Terwijl u wacht, kunt u de stappen in de volgende sectie voltooien om App Service te configureren voor implementatie vanuit het register.
Autoriseer de beheerde identiteit voor uw containerregister
De beheerde identiteit die u hebt gemaakt, heeft nog geen autorisatie om uit het containerregister te halen. In deze stap schakelt u de autorisatie in.
Haal de principal-id voor de beheerde identiteit op:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)Haal de resource-id voor het containerregister op:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)Verleen de beheerde identiteit toegang tot het containerregister:
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"Zie Wat is op rollen gebaseerd toegangsbeheer van Azure? voor meer informatie over deze machtigingen.
De web-app maken
Maak een App Service-plan met behulp van de
az appservice plan createopdracht:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxEen App Service-abonnement komt overeen met de virtuele machine die als host fungeert voor de web-app. De vorige opdracht maakt standaard gebruik van een goedkope B1-prijscategorie die gratis is voor de eerste maand. U kunt het niveau opgeven met behulp van de parameter
--sku.Maak de web-app met de opdracht
az webapp create: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:latestVervang
<app-name>door een naam voor de web-app. Deze naam moet uniek zijn binnen Azure. Vervang ook<registry-name>door de naam van uw registry uit de vorige sectie.Tip
U kunt de containerinstellingen van de web-app op elk gewenst moment ophalen met de opdracht
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. De afbeelding wordt opgegeven in de eigenschapDOCKER_CUSTOM_IMAGE_NAME. Wanneer de web-app is geïmplementeerd via Azure DevOps- of Azure Resource Manager-sjablonen, kan de image ook worden weergegeven in een eigenschap met de naamLinuxFxVersion. Beide eigenschappen hebben hetzelfde doel. Als beide aanwezig zijn in de configuratie van de web-app, heeftLinuxFxVersionprioriteit.
De web-app configureren
In deze stap configureert u de web-app als volgt:
- Stel de app zo in dat deze aanvragen naar poort 8000 stuurt. De voorbeeldcontainer luistert op poort 8000 voor webaanvragen.
- Configureer uw app voor het gebruik van de beheerde identiteit om images op te halen uit uw containerregister.
- Stel doorlopende implementatie in vanuit het containerregister. (Elke image die naar de registry wordt gepusht, activeert uw app om de nieuwe image op te halen.) Deze stap is niet nodig om uw web-app te configureren om images uit uw containerregistry op te halen, maar kan de web-app waarschuwen wanneer een nieuwe image naar de registry wordt gepusht. Als u deze stap niet voltooit, moet u handmatig een image pull uitvoeren door de web-app opnieuw op te starten.
Gebruik
az webapp config appsettings setom de omgevingsvariabeleWEBSITES_PORTin te stellen zoals verwacht voor de app-code:az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000Vervang
<app-name>door de naam die u in de vorige stap hebt gebruikt.Schakel de door de gebruiker toegewezen beheerde identiteit in de web-app in met behulp van de
az webapp identity assignopdracht: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 $idVervang
<app-name>door de naam die u in de vorige stap hebt gebruikt.Configureer uw app voor het ophalen uit Container Registry met behulp van beheerde identiteiten.
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=TrueVervang
<app-name>door de naam die u in de vorige stap hebt gebruikt.Stel de client-id in die uw web-app gebruikt om images uit Container Registry op te halen. Deze stap is niet vereist als u de door het systeem toegewezen beheerde identiteit gebruikt.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdSchakel CI/CD in App Service in.
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_URLis een URL die App Service voor u genereert. Uw containerregister moet deze URL gebruiken om App Service op de hoogte te stellen dat er een installatiekopie is gepusht. Het maakt de webhook eigenlijk niet voor u aan.Maak een webhook in uw container registry. Gebruik de CI_CD_URL die u in de laatste stap hebt gekregen.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestAls u wilt testen of uw webhook juist is geconfigureerd, pingt u de webhook en ziet u of u een 200 OK-antwoord krijgt.
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
Als u alle informatie over alle webhook-gebeurtenissen wilt zien, verwijdert u de
--queryparameter.Als u het containerlogboek streamt, ziet u een
Starting container for sitebericht na de webhook ping omdat de webhook ervoor zorgt dat de app opnieuw wordt gestart.
Ga naar de web-app
Als u de app wilt testen, gaat u naar https://<app-name>.azurewebsites.net. Vervang <app-name> door de naam van uw web-app.
De eerste keer dat u toegang probeert te krijgen tot de app, kan het enige tijd duren voordat de app reageert omdat App Service de volledige image uit de registry moet ophalen. Als de browser een time-out geeft, vernieuwt u gewoon de pagina. Nadat de eerste installatiekopie is opgehaald, worden de volgende tests veel sneller uitgevoerd.
Diagnostische logboeken openen
Terwijl u wacht tot de App Service de image heeft opgehaald, is het handig om precies te zien wat App Service doet door de containerlogboeken naar uw terminal te streamen.
Schakel logboekregistratie voor container in:
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemSchakel de logboekstream in:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialAls u de consolelogboeken niet meteen ziet, probeert u het opnieuw na 30 seconden.
U kunt de logboekbestanden ook vanuit een browser inspecteren door naar
https://<app-name>.scm.azurewebsites.net/api/logs/docker.Als u het streamen van logboeken wilt stoppen, selecteert u Ctrl+C.
De app-code wijzigen en opnieuw uitrollen
In deze sectie maakt u een wijziging in de code van de web-app, bouwt u de image opnieuw en pusht u deze vervolgens naar het containerregister. In App Service wordt vervolgens automatisch de bijgewerkte image opgehaald uit het containerregister om de actieve web-app bij te werken.
Open in uw lokale map docker-django-webapp-linux het bestand app/templates/app/index.html.
Wijzig het eerste HTML-element om overeen te komen met de volgende code.
<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>Sla uw wijzigingen op.
Ga naar de map docker-django-webapp-linux en bouw de image opnieuw op:
docker build --tag appsvc-tutorial-custom-image .Werk de tag van de afbeelding bij naar
latest:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestVervang
<registry-name>door de naam van uw registry.Push de image naar de registry:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestWanneer de push van de image is voltooid, stelt de webhook App Service op de hoogte van de push en probeert App Service de bijgewerkte image op te halen. Wacht enkele minuten en controleer vervolgens of de update is uitgerold door naar
https://<app-name>.azurewebsites.nette gaan.
Verbinding maken met de container met behulp van SSH
Wanneer de container draait, kun je er via App Service's geauthenticeerde Kudu-proxy bij via de nieuwere browserterminal of az webapp exec. Je hoeft geen SSH-server in de image te installeren of te starten voor deze opties.
Voor toegangsvereisten en app- of slotcontroles, zie Open een container shell (SSH) en voer commando's uit.
De SSH-verbinding met de container openen
Gebruik Azure CLI 2.90.0 of later en log in op je Azure-account. Open een interactieve shell in je lokale terminal met het preview-commando
az webapp exec:az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>Onderzoek de processen die in de app draaien met
top, als dat beschikbaar is in de image.
Voor detached command execution in plaats van een interactieve sessie, zie Voer commando's uit zonder interactieve sessie. Acceptatie van een verzoek bevestigt niet dat een opdracht succesvol is voltooid.
Resources opschonen
De resources die u in dit artikel hebt gemaakt, kunnen doorlopende kosten met zich meebrengen. Als u de resources wilt opschonen, hoeft u alleen de resourcegroep met deze resources te verwijderen:
az group delete --name msdocs-custom-container-tutorial
Volgende stappen
Wat u hebt geleerd:
- Implementeer een aangepaste image in een privécontainerregister.
- Implementeer de aangepaste installatiekopie naar App Service.
- Werk de installatiekopie bij en rol deze opnieuw uit.
- Open diagnostische logboeken.
- Maak verbinding met de container met behulp van SSH.
- Push een aangepaste Docker-image naar Container Registry.
- Implementeer de aangepaste installatiekopie in App Service.
- Stel omgevingsvariabelen in.
- Haal de containerinstallatiekopie in App Service op met behulp van een beheerde identiteit.
- Open diagnostische logboeken.
- Schakel CI/CD in van Container Registry naar App Service.
- Maak verbinding met de container met behulp van SSH.
Ga naar de volgende tutorial:
Of bekijk andere resources: