Aangepaste software naar Azure App Service migreren met een aangepaste container
Azure-app Service biedt vooraf gedefinieerde toepassingsstacks, zoals ASP.NET of Node.js, in Windows. Deze toepassingsstacks worden uitgevoerd op IIS. De vooraf geconfigureerde Windows-omgeving vergrendelt het besturingssysteem van:
- Beheerderstoegang.
- Software-installaties.
- Wijzigingen in de algemene assemblycache.
Zie Functionaliteit van besturingssystemen in Azure App Service voor meer informatie.
U kunt een aangepaste, geconfigureerde Windows-installatiekopieën 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. Dit 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 een aangepaste, geconfigureerde Windows-installatiekopieën van Visual Studio naar Azure Container Registry en voert deze vervolgens uit in App Service.
Vereisten
Vereisten om deze zelfstudie te voltooien:
- 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 functies ophalen te selecteren.
De app lokaal instellen
Het voorbeeld downloaden
In deze stap stelt u het lokale .NET-project in.
- Download het voorbeeldproject.
- Pak het custom-font-win-container-master.zip-bestand uit (pak het 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 code zoals ze is in een aangepaste Windows-container.
Het lettertype installeren
Navigeer in Windows Verkenner naar custom-font-win-container-master/CustomFontSample, klik met de rechtermuisknop op FrederickatheGreat-Regular.ttf en selecteer Installeren.
Dit lettertype is openbaar beschikbaar via Google Fonts.
De app uitvoeren
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 de app echter in plaats daarvan 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 Add>Container Orchestration Support.
Selecteer Docker Compose>OK.
Uw project is nu ingesteld op uitvoering in een Windows-container. Er Dockerfile
wordt een 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 installatiekopie gebruiken. Wijzig de bovenliggende installatiekopie door de regel FROM
te vervangen door de volgende code:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Voeg aan het einde van het bestand de volgende regel toe 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.
Notitie
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 afbeeldingen opslaan voor containerimplementaties. U kunt App Service configureren voor het gebruik van installatiekopieën die worden gehost in Azure Container Registry.
Open de publicatiewizard
Klik in Solution Explorer met de rechtermuisknop op het project CustomFontSample en selecteer Publish (publiceren).
Het register maken en publiceren
Selecteer in de publicatiewizard Container Registry (containerregister)>Create New Azure Container Registry (nieuw Azure-containerregister maken)>Publish (publiceren).
Aanmelden met een Azure-account
Selecteer een account toevoegen in het dialoogvenster Een nieuw Azure Container Registry maken en meld u vervolgens aan bij uw Azure-abonnement. Als u al bent aangemeld, selecteert u het account met het gewenste abonnement uit de vervolgkeuzelijst.
Het register configureren
Configureer het nieuwe containerregister met behulp van de voorgestelde waarden in de volgende tabel als richtlijn. Selecteer Maken wanneer u klaar bent.
Instelling | Voorgestelde waarde |
---|---|
DNS-voorvoegsel | Behoud de gegenereerde registernaam of wijzig deze in een andere unieke naam. |
Resourcegroep | Selecteer Nieuw, typ myResourceGroup en selecteer OK. |
SKU | Basis. Zie Prijscategorieën voor meer informatie. |
Registerlocatie | Europa -west |
Er wordt een terminalvenster geopend en de voortgang van de implementatie van de installatiekopie wordt weergegeven. Wacht totdat de installatie is voltooid.
Aanmelden bij Azure
Meld u aan bij het Azure-portaal.
Een webtoepassing maken
Selecteer in het menu links Create a resource (een resource maken)>Web>Web App for Containers.
Basisprincipes van app configureren
Configureer op het tabblad Basis de instellingen volgens de volgende tabel. Selecteer vervolgens Volgende: Docker.
Instelling | Voorgestelde waarde |
---|---|
Abonnement | Zorg ervoor dat het correcte abonnement is geselecteerd. |
Resourcegroep | Selecteer Nieuwe maken, typ myResourceGroup en selecteer OK. |
Naam | Typ een unieke naam. De URL van de web-app is https://<app-name>.azurewebsites.net , waarbij <app-name> de naam van uw app is. |
Publiceren | Docker-container |
Besturingssysteem | Windows |
Regio | Europa -west |
Windows-abonnement | Selecteer Nieuwe maken, typ myAppServicePlan en selecteer OK. |
Uw tabblad Basisprincipes moet er zo uitzien:
De Windows-container configureren
Configureer uw aangepaste Windows-container op het tabblad Docker , zoals wordt weergegeven in de volgende tabel en selecteer Vervolgens Beoordelen en maken.
Instelling | Voorgestelde waarde |
---|---|
Bron van installatiekopie | Azure Container Register |
Register | Selecteer het register dat u eerder hebt gemaakt. |
Image | customfontsample |
Tag | nieuwste |
De app voltooien
Selecteer Maken en wacht tot azure de vereiste resources heeft gemaakt.
Bladeren naar de web-app
Wanneer de implementatie is voltooid, wordt er een meldingsvak 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 Azure 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 <de app-naam> 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 gebruikt de Docker-containertechnologie voor het hosten van zowel ingebouwde installatiekopieën als aangepaste installatiekopieën. 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.
Notitie
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-installatiekopieën naar Azure Container Registry.
- Implementeer de aangepaste installatiekopieën in App Service.
- Configureer omgevingsvariabelen.
- Haal de installatiekopie in App Service op met behulp van een beheerde identiteit.
- Toegang tot diagnostische logboeken.
- Schakel CI/CD van Azure Container Registry in 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 het containerregister 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.
- U moet beschikken over een Azure-account met een actief abonnement. Gratis een account maken
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in 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. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor 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-installatiekopieën te bouwen. Voor het installeren van Docker moet de computer mogelijk opnieuw worden opgestart.
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 een git-kloon of download.
Klonen met Git
Kloon de voorbeeldopslagplaats:
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
Downloaden van GitHub
In plaats van git-kloon te gebruiken, kunt u een zip-code> voor lokaal>downloaden bezoeken https://github.com/Azure-Samples/docker-django-webapp-linux 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 .
Het Docker-bestand bekijken (optioneel)
Dit is het bestand in het voorbeeld met de naam Dockerfile. Hierin worden de Docker-installatiekopieën beschreven en vindt u configuratie-instructies.
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"]
- Met de eerste groep opdrachten worden de vereisten van de app geïnstalleerd in de omgeving.
- De tweede groep opdrachten maakt een SSH-server om verbeterde beveiligingscommunicatie tussen de container en de host te bieden.
- Met de laatste regel,
ENTRYPOINT ["init.sh"]
, wordtinit.sh
aangeroepen om de SSH-service en Python-server te starten.
De installatiekopie lokaal bouwen en testen
Notitie
Docker Hub heeft quota voor het aantal anonieme pulls per IP en het aantal geverifieerde pulls per gratis gebruiker. Als u merkt dat uw pulls van Docker Hub beperkt zijn, kunt u proberen docker login
of u nog niet bent aangemeld.
Voer de volgende opdracht uit om de installatiekopie 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-image
Met deze
docker run
opdracht geeft u de poort met het-p
argument op en bevat de naam van de installatiekopieën.-it
hiermee kunt u deze stoppen met Ctrl+C.Tip
Als u windows gebruikt en de fout standard_init_linux.go:211: exec user process veroorzaakt "geen dergelijk bestand of map", 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
--config core.autocrlf=input
parameter weggelaten. In dit geval kloont u de opslagplaats 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 om te
http://localhost:8000
controleren of de web-app en de container correct werken.
i. 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 te verifiëren met een containerregister. 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 westeurope
U kunt de waarde
--location
wijzigen 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
II. Een containerregister maken
Maak een containerregister met behulp van de volgende
az acr create
opdracht. Vervang<registry-name>
door een unieke naam voor uw register. 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 true
--admin-enabled
Met de parameter kunt u installatiekopieën naar het register pushen met behulp van beheerdersreferenties.Haal de beheerdersreferenties op door de opdracht uit te
az credential acr show
voeren:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
De JSON-uitvoer van deze opdracht biedt twee wachtwoorden samen met de gebruikersnaam van het register.
III. De voorbeeldinstallatiekopieën pushen naar Azure Container Registry
In deze sectie pusht u de installatiekopieën naar Azure Container Registry, die later door App Service worden gebruikt.
Gebruik vanuit de lokale terminal waar u de voorbeeldinstallatiekopie hebt gemaakt de
docker login
opdracht om u aan te melden bij het containerregister: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.U gebruikt dezelfde registernaam in alle resterende stappen van deze sectie.
Wanneer de aanmelding is geslaagd, tagt u uw lokale Docker-installatiekopieën in het register:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
Gebruik de opdracht
docker push
om de installatiekopie naar het register te pushen:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
De eerste keer dat u de installatiekopie uploadt, kan dit enkele minuten duren, omdat deze upload de basisinstallatiekopie 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.
IV. De beheerde identiteit voor uw register autoriseren
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)
De beheerde identiteit toegang verlenen 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.
V. De web-app maken
Maak een App Service-abonnement met behulp van de opdracht
az appservice plan create
:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
Een 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 de laag opgeven met behulp van de
--sku
parameter.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:latest
Vervang door
<app-name>
een naam voor de web-app. Deze naam moet uniek zijn binnen Azure. Vervang ook<registry-name>
door de naam van uw register 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 installatiekopie 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 installatiekopie 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, heeftLinuxFxVersion
prioriteit.
VI. De web-app configureren
In deze stap configureert u de web-app als volgt:
- Configureer de app voor het verzenden van aanvragen naar poort 8000. De voorbeeldcontainer luistert op poort 8000 voor webaanvragen.
- Vraag uw app om de beheerde identiteit te gebruiken om installatiekopieën op te halen uit uw containerregister.
- Configureer continue implementatie vanuit het containerregister (elke push-installatiekopie naar het register activeert uw app om de nieuwe installatiekopie op te halen). Dit onderdeel is niet nodig om uw web-app op te halen uit uw containerregister, maar u kunt uw web-app laten weten wanneer een nieuwe installatiekopie naar het register wordt gepusht. Zonder dit moet u handmatig een pull-installatiekopie activeren door de web-app opnieuw op te starten.
Gebruik
az webapp config appsettings set
om de omgevingsvariabeleWEBSITES_PORT
in 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=8000
Vervang
<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 de
az webapp identity assign
opdracht: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
Vervang
<app-name>
door de naam die u in de vorige stap hebt gebruikt.Configureer uw app voor het ophalen uit Azure 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=True
Vervang
<app-name>
door de naam die u in de vorige stap hebt gebruikt.Stel de client-id in die uw web-app gebruikt om uit Azure Container Registry te halen. Deze stap is niet nodig 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=$clientId
Schakel 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_URL
is een URL die App Service voor u genereert. Uw register moet deze URL gebruiken om App Service op de hoogte te stellen van het pushen van een installatiekopieën. De webhook wordt niet voor u gemaakt.Maak een webhook in uw containerregister met behulp van de CI_CD_URL die u hebt gekregen uit de laatste stap.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
Als u wilt testen of uw webhook juist is geconfigureerd, pingt u de webhook en controleert 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
--query
parameter.Als u het containerlogboek streamt, ziet u een
Starting container for site
bericht na de webhook ping omdat de webhook de app activeert om opnieuw te starten.
VII. Bladeren 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 installatiekopie uit het register moet ophalen. Als er een time-out optreedt voor de browser, vernieuwt u gewoon de pagina. Zodra de eerste installatiekopie is opgehaald, verlopen volgende tests veel sneller.
VIII. Toegang tot diagnostische logboeken
Terwijl u wacht tot de App Service de installatiekopie 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 filesystem
Schakel de logboekstream in:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
Als u de consolelogboeken niet meteen ziet, probeert u het opnieuw na 30 seconden.
U kunt ook de logboekbestanden van de browser inspecteren op
https://<app-name>.scm.azurewebsites.net/api/logs/docker
.Als u het streamen van logboeken wilt stoppen, selecteert u Ctrl+C.
IX. De app-code wijzigen en opnieuw implementeren
In deze sectie maakt u een wijziging in de code van de web-app, bouwt u de installatiekopieën opnieuw en pusht u deze vervolgens naar het containerregister. In App Service wordt vervolgens automatisch de bijgewerkte installatiekopie opgehaald uit het register 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 eerst het 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 installatiekopie opnieuw:
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:latest
Vervang
<registry-name>
door de naam van uw register.Push de installatiekopie naar het register:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
Wanneer de push van de installatiekopie is voltooid, meldt de webhook App Service over de push en probeert App Service de bijgewerkte installatiekopie op te halen. Wacht enkele minuten en controleer vervolgens of de update is geïmplementeerd door te bladeren naar
https://<app-name>.azurewebsites.net
.
X. Verbinding maken met de container via SSH
SSH maakt verbeterde beveiligingscommunicatie mogelijk tussen een container en een client. Als u een SSH-verbinding met uw container wilt inschakelen, moet u hiervoor uw aangepaste installatiekopieën configureren. Wanneer de container wordt uitgevoerd, kunt u een SSH-verbinding openen.
De container configureren voor SSH
De voorbeeld-app die in deze zelfstudie wordt gebruikt, heeft al de benodigde configuratie in het Dockerfile, waarmee de SSH-server wordt geïnstalleerd en ook de aanmeldingsreferenties worden ingesteld. Deze sectie is alleen ter informatie. Als u verbinding wilt maken met de container, gaat u verder met de volgende sectie.
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
Notitie
Deze configuratie staat geen externe verbindingen naar de container toe. SSH is alleen beschikbaar via de Kudu/SCM-Site. De Kudu/SCM-site wordt geverifieerd met uw Azure-account.
root:Docker!
mag niet worden gewijzigd wanneer u SSH gebruikt. SCM/KUDU gebruikt uw Azure Portal-referenties. Als u deze waarde wijzigt, treedt er een fout op wanneer u SSH gebruikt.
Met het Dockerfile wordt ook het bestand sshd_config gekopieerd naar de map /etc/ssh/, en wordt poort 2222 zichtbaar in de container:
COPY sshd_config /etc/ssh/
# ...
EXPOSE 8000 2222
Poort 2222 is interne poort die alleen toegankelijk is voor containers in het brugnetwerk van een virtueel particulier netwerk.
Ten slotte wordt de SSH-server gestart met het invoerscript init.sh.
#!/bin/bash
service ssh start
De SSH-verbinding met de container openen
Blader naar
https://<app-name>.scm.azurewebsites.net/webssh/host
en meld u aan met uw Azure-account. Vervang<app-name>
door de naam van uw web-app.Wanneer u zich aanmeldt, wordt u omgeleid naar een informatieve pagina voor de web-app. Selecteer bovenaan de pagina SSH om de shell te openen en opdrachten te gebruiken.
U kunt bijvoorbeeld de processen onderzoeken die in de app worden uitgevoerd met behulp van de
top
opdracht.
XI. Resources opschonen
De resources die u in dit artikel hebt gemaakt, kunnen doorlopende kosten in rekening worden gebracht. 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:
- Een aangepaste installatiekopieën implementeren in een privécontainerregister.
- Implementeer en de aangepaste installatiekopieën in App Service.
- Werk de installatiekopie bij en implementeer deze opnieuw.
- Toegang tot diagnostische logboeken.
- Maak verbinding met de container met behulp van SSH.
- Push een aangepaste Docker-installatiekopieën naar Azure Container Registry.
- Implementeer de aangepaste installatiekopieën in App Service.
- Configureer omgevingsvariabelen.
- Haal de installatiekopie in App Service op met behulp van een beheerde identiteit.
- Toegang tot diagnostische logboeken.
- Schakel CI/CD van Azure Container Registry in naar App Service.
- Maak verbinding met de container met behulp van SSH.
In de volgende zelfstudie leert u hoe u beveiliging voor uw app kunt bieden met een aangepast domein en certificaat.
U kunt ook andere resources bekijken: