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.
In dit artikel wordt uitgelegd hoe u een Python-project, zoals een webtoepassing, gebruikt en implementeert als een Docker-container in Azure. Hierin worden de algemene containerisatiewerkstroom, Azure-implementatieopties voor containers en Python-specifieke containerconfiguraties binnen Azure behandeld. Het bouwen en implementeren van Docker-containers in Azure volgt een standaardproces in verschillende talen, met Python-specifieke configuraties in het Dockerfile, requirements.txten instellingen voor webframeworks zoals Django, Flask en FastAPI.
Scenario's voor containerwerkstroom
Voor het ontwikkelen van Python-containers worden enkele typische werkstromen voor het verplaatsen van code naar container besproken in de volgende tabel.
Scenariobeschrijving | Beschrijving | Werkproces |
---|---|---|
Dev | Maak Python Docker-afbeeldingen lokaal in uw ontwikkelomgeving. |
Code: Kloon uw appcode lokaal met behulp van Git (met Docker geïnstalleerd). Build: Gebruik Docker CLI, VS Code (met extensies), PyCharm (met Docker-invoegtoepassing). Beschreven in de sectie Werken met Python Docker-installatiekopieën en -containers. Test: Voer de container lokaal uit en test deze. Push: Push de image naar een containerregister, zoals Azure Container Registry, Docker Hub of een privéregister. Implementeren: Implementeer de container van het register naar een Azure-service. |
Hybride | Bouw Docker-installatiekopieën in Azure, maar initieer het proces vanuit uw lokale omgeving. |
Code: Kloon de code lokaal (niet nodig om Docker te installeren). Build: Als u builds in Azure wilt activeren, gebruikt u VS Code (met externe extensies) of de Azure CLI. Push: Push de gebouwde afbeelding naar Azure Container Registry. Implementeren: Implementeer de container van het register naar een Azure-service. |
Azuur | Gebruik Azure Cloud Shell om containers volledig in de cloud te bouwen en te implementeren. |
Code: Kloon de GitHub-opslagplaats in Azure Cloud Shell. Build: Azure CLI of Docker CLI gebruiken in Cloud Shell. Push: Push een afbeelding naar een register, zoals Azure Container Registry, Docker Hub of een privéregister. Implementeren: Implementeer de container van het register naar een Azure-service. |
Het einddoel van deze werkstromen is om een container te laten uitvoeren in een van de Azure-resources die Docker-containers ondersteunen, zoals wordt vermeld in de volgende sectie.
Een ontwikkelomgeving kan het volgende zijn:
- Uw lokale werkstation met Visual Studio Code of PyCharm
- Codespaces (een ontwikkelomgeving die wordt gehost in de cloud)
- Visual Studio Dev Containers (een container als een ontwikkelomgeving)
Opties voor implementatiecontainers in Azure
Python-container-apps worden ondersteund in de volgende services.
Dienst | Beschrijving |
---|---|
Webapp voor Containers | Azure App Service is een volledig beheerd hostingplatform voor in containers geplaatste webtoepassingen, waaronder websites en web-API's. Het biedt ondersteuning voor schaalbare implementaties en kan naadloos worden geïntegreerd met CI/CD-werkstromen met behulp van Docker Hub, Azure Container Registry en GitHub. Deze service is ideaal voor ontwikkelaars die een eenvoudig en efficiënt pad willen om container-apps te implementeren, terwijl ze profiteren van de volledige mogelijkheden van het Azure App Service-platform. Door uw toepassing en alle bijbehorende afhankelijkheden in één implementeerbare container te verpakken, krijgt u zowel de draagbaarheid als het beheergemak, zonder dat u infrastructuur hoeft te beheren.
Voorbeeld: Een Flask- of FastPI-web-app implementeren in Azure App Service. |
Azure Container Apps (ACA) | Azure Container Apps (ACA) is een volledig beheerde serverloze containerservice, mogelijk gemaakt door Kubernetes en opensource-technologieën zoals Dapr, KEDA en envoy. Het ontwerp bevat aanbevolen procedures voor de branche en is geoptimaliseerd voor het uitvoeren van containers voor algemeen gebruik. ACA abstraheert de complexiteit van het beheren van een Kubernetes-infrastructuur. Directe toegang tot de Kubernetes-API is niet vereist of ondersteund. In plaats daarvan biedt het toepassingsconstructies op een hoger niveau, zoals revisies, schalen, certificaten en omgevingen om ontwikkel- en implementatiewerkstromen te vereenvoudigen. Deze service is ideaal voor ontwikkelteams die microservices in containers willen bouwen en implementeren met minimale operationele overhead, zodat ze zich kunnen richten op toepassingslogica in plaats van infrastructuurbeheer. Voorbeeld: Een Flask- of FastPI-web-app implementeren in Azure Container Apps. |
Azure Container Instances (ACI) | Azure Container Instances (ACI) is een serverloze aanbieding die één pod van Hyper-V geïsoleerde containers op aanvraag biedt. Facturering is gebaseerd op het werkelijke resourceverbruik in plaats van vooraf toegewezen infrastructuur, waardoor deze geschikt is voor kortstondige of burstbare workloads. In tegenstelling tot andere containerservices bevat ACI geen ingebouwde ondersteuning voor concepten zoals schalen, taakverdeling of TLS-certificaten. In plaats daarvan fungeert het meestal als een fundamentele bouwsteen voor containers, vaak geïntegreerd met Azure-services zoals Azure Kubernetes Service (AKS) voor indeling. ACI exceleert als een lichtgewicht keuze wanneer de abstracties en functies van Azure Container Apps op een hoger niveau niet nodig zijn: Een containerinstallatiekopie maken voor implementatie in Azure Container Instances. (De zelfstudie is niet specifiek voor Python, maar de concepten die worden weergegeven, zijn van toepassing op alle talen.) |
Azure Kubernetes Service (AKS) | Azure Kubernetes Service (AKS) is een volledig beheerde Kubernetes-optie in Azure waarmee u volledige controle hebt over uw Kubernetes-omgeving. Het ondersteunt directe toegang tot de Kubernetes-API en kan elke standaard Kubernetes-workload uitvoeren. Het volledige cluster bevindt zich in uw abonnement, met de clusterconfiguraties en -bewerkingen binnen uw beheer en verantwoordelijkheid. ACI is ideaal voor teams die een volledig beheerde containeroplossing zoeken, terwijl AKS u volledige controle geeft over het Kubernetes-cluster, waarbij u configuraties, netwerken, schalen en bewerkingen moet beheren. Azure verwerkt de inrichting van het besturingsvlak en de infrastructuur, maar de dagelijkse werking en beveiliging van het cluster vallen binnen de controle van uw team. Deze service is ideaal voor teams die de flexibiliteit en kracht van Kubernetes willen, met het extra voordeel van de beheerde infrastructuur van Azure, terwijl ze nog steeds volledig eigenaar blijven van de clusteromgeving.
Voorbeeld: Een Azure Kubernetes Service-cluster implementeren met behulp van de Azure CLI. |
Azure Functions | Azure Functions biedt een gebeurtenisgestuurd, serverloos Functions-as-a-Service-platform (FaaS) waarmee u kleine stukjes code (functies) kunt uitvoeren als reactie op gebeurtenissen, zonder infrastructuur te beheren. Azure Functions deelt veel kenmerken met Azure Container Apps op schaal en integratie met gebeurtenissen, maar is geoptimaliseerd voor kortstondige functies die zijn geïmplementeerd als code of containers. Voor teams die de uitvoering van functies bij gebeurtenissen willen activeren; bijvoorbeeld om verbinding te maken met andere gegevensbronnen. Net als Azure Container Apps biedt Azure Functions ondersteuning voor automatisch schalen en integratie met gebeurtenisbronnen (bijvoorbeeld HTTP-aanvragen, berichtenwachtrijen of blobopslagupdates). Deze service is ideaal voor teams die lichtgewicht, door gebeurtenissen geactiveerde werkstromen bouwen, zoals het verwerken van bestandsuploads of reageren op databasewijzigingen, in Python of andere talen.
Voorbeeld: Een functie maken in Linux met behulp van een aangepaste container. |
Zie Container Apps vergelijken met andere Azure-containeropties voor een gedetailleerdere vergelijking van deze services.
Virtuele omgevingen en containers
Virtuele omgevingen in Python isoleren projectafhankelijkheden van Python-installaties op systeemniveau en zorgen voor consistentie in ontwikkelomgevingen. Een virtuele omgeving bevat een eigen geïsoleerde Python-interpreter, samen met de bibliotheken en scripts die nodig zijn om de specifieke projectcode in die omgeving uit te voeren. Afhankelijkheden voor Python-projecten worden beheerd via het requirements.txt-bestand . Door afhankelijkheden op te geven in een requirements.txt-bestand , kunnen ontwikkelaars de exacte omgeving reproduceren die nodig is voor hun project. Deze aanpak vereenvoudigt soepelere overgangen naar containerimplementaties zoals Azure App Service, waarbij omgevingsconsistentie essentieel is voor betrouwbare toepassingsprestaties.
Aanbeveling
In python-projecten in containers zijn virtuele omgevingen doorgaans overbodig omdat Docker-containers geïsoleerde omgevingen bieden met hun eigen Python-interpreter en afhankelijkheden. U kunt echter virtuele omgevingen gebruiken voor lokale ontwikkeling of tests. Om Docker-installatiekopieën slank te houden, sluit virtuele omgevingen uit met behulp van een .dockerignore-bestand, waardoor wordt voorkomen dat onnodige bestanden in de kopie worden opgenomen.
U kunt Docker-containers beschouwen als mogelijkheden die vergelijkbaar zijn met virtuele Python-omgevingen, maar met bredere voordelen in reproduceerbaarheid, isolatie en draagbaarheid. In tegenstelling tot virtuele omgevingen kunnen Docker-containers consistent worden uitgevoerd in verschillende besturingssystemen en omgevingen, zolang er een containerruntime beschikbaar is.
Een Docker-container bevat uw Python-projectcode en alles wat nodig is om uit te voeren, zoals afhankelijkheden, omgevingsinstellingen en systeembibliotheken. Als u een container wilt maken, bouwt u eerst een Docker-image op basis van uw projectcode en -configuratie, en start u daarna een container, een uitvoerbare instantie van die image.
Voor het containeriseren van Python-projecten worden de sleutelbestanden beschreven in de volgende tabel:
Projectbestand | Beschrijving |
---|---|
requirements.txt | Dit bestand bevat de definitieve lijst met Python-afhankelijkheden die nodig zijn voor uw toepassing. Docker gebruikt deze lijst tijdens het image buildproces om alle benodigde pakketten te installeren. Dit zorgt voor consistentie tussen ontwikkel- en implementatieomgevingen. |
Dockerfile | Dit bestand bevat instructies voor het bouwen van uw Python Docker-installatiekopie, waaronder de selectie van basisinstallatiekopieën, installatie van afhankelijkheden, het kopiëren van code en het opstarten van containers. Hiermee definieert u de volledige uitvoeringsomgeving voor uw toepassing. Zie de sectie Dockerfile-instructies voor Python voor meer informatie. |
.dockerignore | Dit bestand bevat de bestanden en mappen die moeten worden uitgesloten bij het kopiëren van inhoud naar de Docker-installatiekopie met de COPY opdracht in het Dockerfile. In dit bestand worden patronen gebruikt die vergelijkbaar zijn met .gitignore voor het definiëren van uitsluitingen. Het .dockerignore-bestand ondersteunt uitsluitingspatronen die vergelijkbaar zijn met .gitignore-bestanden . Zie .dockerignore-bestand voor meer informatie. Het uitsluiten van bestanden helpt bij het bouwen van afbeeldingen, maar moet ook worden gebruikt om te voorkomen dat gevoelige informatie wordt toegevoegd aan de afbeelding waar deze kan worden gecontroleerd. De .dockerignore moet bijvoorbeeld regels bevatten om .env en .venv (virtuele omgevingen) te negeren. |
Containerinstellingen voor webframeworks
Webframeworks binden doorgaans aan standaardpoorten (zoals 5000 voor Flask, 8000 voor FastAPI). Wanneer u containers implementeert in Azure-services, zoals Azure Container Instances, Azure Kubernetes Service (AKS) of App Service for Containers, is het van cruciaal belang dat u de luisterpoort van de container expliciet beschikbaar maakt en configureert om de juiste routering van inkomend verkeer te garanderen. Door de juiste poort te configureren, zorgt u ervoor dat de infrastructuur van Azure aanvragen naar het juiste eindpunt in uw container kan doorsturen.
Webframework | Porto |
---|---|
Django | achtduizend |
Flacon | 5000 of 5002 |
FastAPI (uvicorn) | 8000 of 80 |
In de volgende tabel ziet u hoe u de poort instelt voor verschillende Azure-containeroplossingen.
Azurecontaineroplossing | Webapplicatiepoort instellen |
---|---|
Webapp voor containers | Standaard gaat App Service ervan uit dat uw aangepaste container luistert op poort 80 of poort 8080. Als uw container naar een andere poort luistert, stelt u de WEBSITES_PORT app-instelling in uw App Service-app in. Zie Een aangepaste container configureren voor Azure App Service voor meer informatie. |
Azure Container Apps | Met Azure Container Apps kunt u uw container-app beschikbaar maken voor het openbare web, uw virtuele netwerk of andere container-apps in dezelfde omgeving door inkomend verkeer in te schakelen. Stel het toegangsbeheerobject targetPort in op de poort waar uw container naar luistert voor binnenkomende aanvragen. Eindpunt voor inkomend verkeer van toepassingen wordt altijd weergegeven op poort 443. Voor meer informatie, zie HTTPS- of TCP-ingang instellen in Azure Container Apps. |
Azure Container Instances, Azure Kubernetes | U definieert de poort waarop uw app luistert tijdens het maken van een container of pod. De containerinstallatiekopieën moeten een webframework, een toepassingsserver (bijvoorbeeld gunicorn, uvicorn) en eventueel een webserver (bijvoorbeeld nginx) bevatten. In complexere scenario's kunt u verantwoordelijkheden splitsen tussen twee containers, één voor de toepassingsserver en een andere voor de webserver. In dat geval maakt de webservercontainer doorgaans poort 80 of 443 beschikbaar voor extern verkeer. |
Python Dockerfile
Een Dockerfile is een tekstbestand met instructies om een Docker-image voor een Python-toepassing te bouwen. De eerste instructie geeft doorgaans de basisafbeelding op om mee te beginnen. Volgende instructies beschrijven vervolgens acties zoals het installeren van de benodigde software, het kopiëren van toepassingsbestanden en het configureren van de omgeving om een uitvoerbare installatiekopie te maken. De volgende tabel bevat Python-specifieke voorbeelden voor veelgebruikte Dockerfile-instructies.
Instructie | Doel | Voorbeeld |
---|---|---|
VAN | Stelt de basisafbeelding in voor opvolgende instructies. | FROM python:3.8-slim |
EXPOSEREN | Vertelt Docker dat de container tijdens runtime naar een opgegeven poort luistert. | EXPOSE 5000 |
KOPIËREN | Kopieert bestanden of mappen van de opgegeven bron en voegt deze toe aan het bestandssysteem van de container op het opgegeven doelpad. | COPY . /app |
RENNEN | Voert een opdracht uit binnen de Docker-image. Haal bijvoorbeeld afhankelijkheden op. De opdracht wordt eenmaal uitgevoerd tijdens het bouwen. | RUN python -m pip install -r requirements.txt |
CMD | De opdracht biedt de standaardinstelling voor het uitvoeren van een container. Er kan slechts één CMD-instructie zijn. | CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"] |
De Docker build-opdracht bouwt Docker-afbeeldingen vanuit een Dockerfile en een context. De context van een build is de set bestanden die zich in het opgegeven pad of de opgegeven URL bevinden. Normaal gesproken bouwt u een image vanuit de hoofdmap van uw Python-project, en het pad voor de build-opdracht is ".", zoals wordt weergegeven in het volgende voorbeeld.
docker build --rm --pull --file "Dockerfile" --tag "mywebapp:latest" .
Het buildproces kan verwijzen naar een van de bestanden in de context. Uw build kan bijvoorbeeld een COPY-instructie gebruiken om te verwijzen naar een bestand in de context. Hier volgt een voorbeeld van een Dockerfile voor een Python-project met behulp van het Flask-framework :
FROM python:3.8-slim
EXPOSE 5000
# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /app
COPY . /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]
U kunt handmatig een Dockerfile maken of automatisch maken met VS Code en de Docker-extensie. Zie Docker-bestanden genereren voor meer informatie.
De Docker-buildopdracht maakt deel uit van de Docker CLI. Wanneer u IDE's zoals VS Code of PyCharm gebruikt, roepen de UI-opdrachten voor het werken met Docker-installatiekopieën de buildopdracht voor u aan en automatiseren het opgeven van opties.
Werken met Python Docker-afbeeldingen en -containers
VS Code en PyCharm
Geïntegreerde ontwikkelomgevingen (IDE's) zoals Visual Studio Code (VS Code) en PyCharm stroomlijnen de ontwikkeling van Python-containers door Docker-taken te integreren in uw werkstroom. Met extensies of invoegtoepassingen vereenvoudigen deze IDE's het bouwen van Docker-installatiekopieën, het uitvoeren van containers en het implementeren naar Azure-services, zoals App Service of Container Instances. Hier volgen enkele van de dingen die u kunt doen met VS Code en PyCharm.
Docker-images downloaden en bouwen.
- Bouw afbeeldingen in uw ontwikkelomgeving.
- Bouw Docker-images in Azure zonder Docker geïnstalleerd in ontwikkelomgeving. (Voor PyCharm gebruikt u de Azure CLI om images te bouwen in Azure.)
Docker-containers maken en uitvoeren vanuit een bestaande image, een gepullde image of direct vanuit een Dockerfile.
Voer toepassingen met meerdere containers uit met Docker Compose.
Verbind en werk met containerregisters zoals Docker Hub, GitLab, JetBrains Space, Docker V2 en andere zelf-hostende Docker-registers.
(alleen VS Code) Voeg een Dockerfile- en Docker Compose-bestanden toe die zijn afgestemd op uw Python-project.
Als u VS Code en PyCharm wilt instellen om Docker-containers uit te voeren in uw ontwikkelomgeving, gebruikt u de volgende stappen.
Als u dat nog niet hebt gedaan, installeert u Azure Tools voor VS Code.
Aanwijzingen | Schermafbeelding |
---|---|
Stap 1: Gebruik Shift + Alt + A om de Azure-extensie te openen en te bevestigen dat u bent verbonden met Azure. U kunt ook het Azure-pictogram selecteren op de balk met VS Code-extensies. Als u niet bent aangemeld, selecteert u Aanmelden bij Azure en volgt u de aanwijzingen. Als u problemen ondervindt bij het openen van uw Azure-abonnement, kan dit komen doordat u zich achter een proxy bevindt. Zie Netwerkverbindingen in Visual Studio Code om verbindingsproblemen op te lossen. |
![]() ![]() |
Stap 2: Gebruik Ctrl + Shift + X om extensies te openen, te zoeken naar de Docker-extensie en de extensie te installeren. U kunt ook het pictogram Extensies selecteren op de balk met VS Code-extensies . |
![]() |
Stap 3: Selecteer het Docker-pictogram in de extensiebalk, vouw afbeeldingen uit en klik met de rechtermuisknop op een Docker-afbeelding om deze als container te starten. |
![]() |
Stap 4: Bewaak de Uitvoer van Docker in het Terminal-venster . |
![]() |
Azure CLI en Docker CLI
U kunt ook werken met Python Docker-installatiekopieën en -containers met behulp van de Azure CLI en Docker CLI. Zowel VS Code als PyCharm hebben terminals waar u deze CLIs kunt uitvoeren.
Gebruik een CLI als u meer controle wilt over opbouw- en uitvoeringsargumenten en voor automatisering. De volgende opdracht laat bijvoorbeeld zien hoe u de Azure CLI az acr build gebruikt om de naam van de Docker-installatiekopieën op te geven.
az acr build --registry <registry-name> \
--resource-group <resource-group> \
--target pythoncontainerwebapp:latest .
Bekijk als een ander voorbeeld de volgende opdracht die laat zien hoe u de Docker CLI-run-opdracht gebruikt. In het voorbeeld ziet u hoe u een Docker-container uitvoert die communiceert met een MongoDB-exemplaar in uw ontwikkelomgeving, buiten de container. De verschillende waarden voor het voltooien van de opdracht zijn gemakkelijker te automatiseren wanneer deze zijn opgegeven in een opdrachtregel.
docker run --rm -it \
--publish <port>:<port> --publish 27017:27017 \
--add-host mongoservice:<your-server-IP-address> \
--env CONNECTION_STRING=mongodb://mongoservice:27017 \
--env DB_NAME=<database-name> \
--env COLLECTION_NAME=<collection-name> \
containermongo:latest
Zie Een in een container geplaatste Python-web-app lokaal bouwen en testen voor meer informatie over dit scenario.
Omgevingsvariabelen in containers
Python-projecten maken vaak gebruik van omgevingsvariabelen om configuratiegegevens door te geven aan de toepassingscode. Deze benadering biedt meer flexibiliteit in verschillende omgevingen. Databaseverbindingsgegevens kunnen bijvoorbeeld worden opgeslagen in omgevingsvariabelen, zodat u eenvoudig kunt schakelen tussen ontwikkelings-, test- en productiedatabases zonder de code te wijzigen. Deze scheiding van configuratie van code bevordert schonere implementaties en verbetert de beveiliging en onderhoudbaarheid.
Pakketten zoals python-dotenv worden vaak gebruikt om sleutel-waardeparen uit een .env-bestand te lezen en in te stellen als omgevingsvariabelen. Een .env-bestand is handig bij het uitvoeren in een virtuele omgeving, maar wordt niet aanbevolen bij het werken met containers. Kopieer het .env-bestand niet naar de Docker-installatiekopie, met name als het gevoelige informatie bevat en de container openbaar wordt gemaakt. Gebruik het .dockerignore-bestand om bestanden uit te sluiten van het kopiëren naar de Docker-installatiekopie. Zie de sectie Virtuele omgevingen en containers in dit artikel voor meer informatie.
U kunt omgevingsvariabelen op een aantal manieren doorgeven aan containers:
- Gedefinieerd in het Dockerfile als ENV-instructies .
- Doorgegeven als
--build-arg
argumenten met de opdracht Docker-build . - Doorgegeven als
--secret
argumenten met de Docker-buildopdracht en BuildKit-back-end. - Doorgegeven als
--env
of--env-file
argumenten met de opdracht Docker-run .
De eerste twee opties hebben hetzelfde nadeel als aangegeven met .env-bestanden, namelijk dat u mogelijk gevoelige informatie in een Docker-afbeelding hardcodeert. U kunt een Docker-installatiekopieën inspecteren en de omgevingsvariabelen bekijken, bijvoorbeeld met de opdracht-docker-installatiekopieën inspecteren.
Met de derde optie met BuildKit kunt u geheime informatie doorgeven die moet worden gebruikt in het Dockerfile voor het bouwen van Docker-installatiekopieën op een veilige manier die niet in de uiteindelijke installatiekopieën wordt opgeslagen.
De vierde optie voor het doorgeven van omgevingsvariabelen met de Opdracht Docker-run betekent dat de Docker-installatiekopieën de variabelen niet bevatten. De variabelen zijn echter nog steeds zichtbaar bij het inspecteren van de containerinstanties (bijvoorbeeld met docker container inspect). Deze optie kan acceptabel zijn wanneer de toegang tot de containerinstantie wordt beheerd of in test- of ontwikkelscenario's.
Hier volgt een voorbeeld van het doorgeven van omgevingsvariabelen met behulp van de Docker CLI-run-opdracht en het --env
argument.
# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>
docker run --rm -it \
--publish $PORT:$PORT \
--env CONNECTION_STRING=<connection-info> \
--env DB_NAME=<database-name> \
<dockerimagename:tag>
In VS Code (Docker-extensie) of PyCharm (Docker-invoegtoepassing) vereenvoudigen ui-hulpprogramma's het beheren van Docker-installatiekopieën en -containers door standaard docker CLI-opdrachten (zoals docker-build, docker-uitvoering) op de achtergrond uit te voeren.
Ten slotte is het opgeven van omgevingsvariabelen bij het implementeren van een container in Azure anders dan het gebruik van omgevingsvariabelen in uw ontwikkelomgeving. Voorbeeld:
Voor Web App for Containers configureert u toepassingsinstellingen tijdens de configuratie van App Service. Deze instellingen zijn beschikbaar voor uw app-code als omgevingsvariabelen en worden geopend met behulp van het standaard os.environ-patroon . U kunt waarden wijzigen na de eerste implementatie wanneer dat nodig is. Zie Instellingen van access-apps als omgevingsvariabelen voor meer informatie.
Voor Azure Container Apps configureert u omgevingsvariabelen tijdens de eerste configuratie van de container-app. Bij latere wijziging van omgevingsvariabelen wordt een revisie van de container gemaakt. Daarnaast kunt u met Azure Container Apps geheimen definiëren op toepassingsniveau en vervolgens ernaar verwijzen in omgevingsvariabelen. Zie Geheimen beheren in Azure Container Apps voor meer informatie.
Als een andere optie kunt u Service Connector gebruiken om Azure-rekenservices te verbinden met andere back-upservices. Deze service configureert de netwerkinstellingen en verbindingsgegevens (bijvoorbeeld het genereren van omgevingsvariabelen) tussen rekenservices en doelbackingservices in het beheervlak.
Containerlogboeken weergeven
Bekijk logboeken van containerinstanties om diagnostische berichten die door de code worden gegenereerd te bekijken en om problemen met de code van uw container op te lossen. Hier volgen verschillende manieren waarop u logboeken kunt weergeven bij het uitvoeren van een container in uw ontwikkelomgeving:
Als u een container met VS Code of PyCharm uitvoert, zoals wordt weergegeven in de sectie VS Code en PyCharm, ziet u logboeken in terminalvensters die worden geopend wanneer Docker wordt uitgevoerd.
Als u de Docker CLI-opdracht uitvoert met de interactieve vlag
-it
, ziet u uitvoer na de opdracht.In Docker Desktop kunt u ook logboeken voor een actieve container bekijken.
Wanneer u een container in Azure implementeert, hebt u ook toegang tot containerlogboeken. Hier volgen verschillende Azure-services en hoe u toegang hebt tot containerlogboeken in Azure Portal.
Azure-dienst | Logboeken openen in Azure Portal |
---|---|
Webapp voor containers | Ga naar de resource Problemen vaststellen en oplossen om logboeken weer te geven. Diagnostische gegevens zijn een intelligente en interactieve ervaring waarmee u problemen met uw app kunt oplossen zonder dat er configuratie is vereist. Voor een realtime weergave van logboeken gaat u naar debewakingslogboekstream - . Zie de andere resources onder Bewaking voor meer gedetailleerde logboekquery's en configuraties. |
Azure Container Apps - een dienst van Microsoft waarmee je containers kunt uitvoeren en beheren in de cloud. | Ga naar de omgevingsresource Diagnose en los problemen op om omgevingsproblemen op te lossen. Vaker wilt u containerlogboeken zien. Selecteer in de containerresource onderToepassingsrevisiebeheer - de revisie en daar kunt u systeem- en consolelogboeken bekijken. Zie de resources onder Bewaking voor meer gedetailleerde logboekquery's en configuraties. |
Azure Container Instances (Azure-containerinstanties) | Ga naar de containerresource en selecteer Logboeken. |
Voor deze services zijn hier de Azure CLI-opdrachten voor toegang tot logboeken.
Azure-dienst | Azure CLI-opdracht voor toegang tot logboeken |
---|---|
Webapp voor containers | az webapp log |
Azure Container Apps - een dienst van Microsoft waarmee je containers kunt uitvoeren en beheren in de cloud. | az containerapps logs |
Azure Container Instances (Azure-containerinstanties) | az container logs |
Er is ook ondersteuning voor het weergeven van logboeken in VS Code. U moet Azure Tools voor VS Code hebben geïnstalleerd. Hieronder ziet u een voorbeeld van het weergeven van Web Apps for Containers-logboeken (App Service) in VS Code.