Skapa en containerbaserad Python-webbapp i molnet
Den här artikeln är en del av en självstudie om hur du containeriserar och distribuerar en Python-webbapp till Azure App Service. Med App Service kan du köra containerbaserade webbappar och distribuera dem via CI/CD-funktioner (kontinuerlig integrering/kontinuerlig distribution) med Docker Hub, Azure Container Registry och Visual Studio Team Services. I den här delen av självstudien lär du dig hur du skapar den containerbaserade Python-webbappen i molnet.
I föregående valfria del av den här handledningen skapades och kördes en containerbild lokalt. I den här delen av självstudien containeriserar du däremot en Python-webbapp till en Docker-avbildning direkt i Azure Container Registry. Att skapa avbildningen i Azure är vanligtvis snabbare och enklare än att skapa lokalt och sedan skicka avbildningen till ett register. Att bygga i molnet kräver inte heller att Docker körs i utvecklingsmiljön.
När Docker-avbildningen finns i Azure Container Registry kan den distribueras till Azure App Service.
Det här tjänstdiagrammet visar de komponenter som beskrivs i den här artikeln.
Skapa ett Azure Container Registry
Om du redan har ett Azure Container Registry som du kan använda går du till nästa steg. Om du inte har en, skapa en.
Azure CLI-kommandon kan köras i Azure Cloud Shell- eller på en arbetsstation med Azure CLI installerat. När du kör i Cloud Shell hoppar du över steg 3.
Skapa en resursgrupp om det behövs med kommandot az group create. Om du redan har konfigurerat ett Azure Cosmos DB för MongoDB-konto delvis 2. Skapa och testa containern lokalt i den här självstudien, ange RESOURCE_GROUP_NAME miljövariabeln till namnet på resursgruppen som du använde för det kontot och gå vidare till nästa steg.
RESOURCE_GROUP_NAME='msdocs-web-app-rg' LOCATION='eastus' az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
LOCATION ska vara ett värde för en Azure-plats. Välj en plats nära dig. Du kan lista Azure-platsvärden med följande kommando:
az account list-locations -o table
.Skapa ett containerregister med kommandot az acr create.
REGISTRY_NAME='<your Azure Container Registry name>' az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic
REGISTRY_NAME måste vara unika i Azure och innehålla 5–50 alfanumeriska tecken.
I JSON-utdata från kommandot letar du efter värdet
loginServer
, som är det fullständigt kvalificerade registernamnet (alla gemener) och som bör innehålla det registernamn som du specificerade.Om du kör Azure CLI lokalt loggar du in i registret med kommandot az acr login.
az acr login -n $REGISTRY_NAME
Kommandot lägger till "azurecr.io" i namnet för att skapa det fullständigt kvalificerade registernamnet. Om det lyckas visas meddelandet "Inloggningen lyckades".
Not
Kommandot
az acr login
behövs inte eller stöds inte i Cloud Shell.
Skapa en avbildning i Azure Container Registry
Du kan skapa containeravbildningen direkt i Azure på några olika sätt. Först kan du använda Azure Cloud Shell, som skapar avbildningen utan att använda din lokala miljö alls. Du kan också skapa containeravbildningen i Azure från din lokala miljö med VS Code eller Azure CLI. Att skapa avbildningen i molnet kräver inte att Docker körs i din lokala miljö. Om du behöver det kan du följa anvisningarna i Klona eller ladda ned exempelappen i del 2 i den här självstudien för att hämta exempelwebbappen Flask eller Django.
Azure CLI-kommandon kan köras på en arbetsstation med Azure CLI installerat eller i Azure Cloud Shell-. När du kör i Cloud Shell hoppar du över steg 1.
Om du kör Azure CLI lokalt loggar du in i registret om du inte redan har gjort det med kommandot az acr login.
az acr login -n $REGISTRY_NAME
Om du kommer åt registret från en annan prenumeration än den där registret skapades använder du växeln
--suffix
.Not
Kommandot
az acr login
behövs inte och stöds inte i Cloud Shell.Skapa avbildningen med kommandot az acr build.
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
I det här kommandot:
Punkten (".") i slutet av kommandot anger platsen för källkoden som ska skapas. Om du inte kör det här kommandot i exempelappens rotkatalog anger du sökvägen till koden.
I stället för en sökväg till koden i din miljö kan du, om du vill, ange en sökväg till GitHub-exempellagringsplatsen: https://github.com/Azure-Samples/msdocs-python-django-container-web-app eller https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.
Om du utelämnar alternativet
-t
(samma som--image
) köar kommandot en lokal kontextbuild utan att skicka den till registret. Att bygga utan att pusha kan vara användbart för att kontrollera att bilden byggs.
Bekräfta att containeravbildningen skapades med kommandot az acr repository list.
az acr repository list -n $REGISTRY_NAME
Nästa steg
Distribuera för webbappar