Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Den här självstudien visar hur du distribuerar en Python Flask- eller FastAPI-webbapp till Azure App Service med hjälp av funktionen Web App for Containers. Web App for Containers ger en enkel startramp för utvecklare att dra nytta av den fullständigt hanterade Azure App Service-plattformen, men som också vill ha en enda distribuerbar artefakt som innehåller en app och alla dess beroenden. Mer information om hur du använder containrar i Azure finns i Jämföra Azure-containeralternativ.
I den här självstudien använder du Docker CLI och Docker för att skapa en Docker-avbildning och testa den lokalt. Du använder Azure CLI för att skapa en Docker-avbildning i ett Azure Container Registry och distribuera den till Azure App Service. Webbappen konfigureras med sin systemtilldelade hanterade identitet (lösenordslösa anslutningar) och rollbaserad Azure-åtkomst för att hämta Docker-avbildningen från Azure Container Registry under distributionen. Du kan också distribuera med Visual Studio Code med Azure Tools-tillägget installerat.
Ett exempel på hur du skapar och skapar en Docker-avbildning som ska köras i Azure Container Apps finns i Distribuera en Flask- eller FastPI-webbapp i Azure Container Apps.
Anteckning
Den här självstudien visar hur du skapar en Docker-avbildning som sedan kan köras i App Service. Detta krävs inte för att använda App Service. Du kan distribuera kod direkt från en lokal arbetsyta till App Service utan att skapa en Docker-avbildning. Ett exempel finns i Snabbstart: Distribuera en Python-webbapp (Django eller Flask) till Azure App Service.
För att slutföra självstudierna behöver du:
Ett Azure-konto där du kan distribuera en webbapp till Azure App Service och Azure Container Registry. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Azure CLI för att skapa en Docker-avbildning och distribuera den till App Service. Du kan också använda Dockeroch Docker CLI för att skapa en Docker och testa den i din lokala miljö.
Hämta koden i din lokala miljö.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git
cd msdocs-python-flask-webapp-quickstart
Lägg till en Dockerfile för att instruera Docker hur avbildningen ska skapas. Dockerfile anger användningen av Gunicorn, en webbserver på produktionsnivå som vidarebefordrar webbbegäranden till Flask- och FastAPI-ramverken. KOMMANDONa ENTRYPOINT och CMD instruerar Gunicorn att hantera begäranden för appobjektet.
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "app:app"]
50505
används för containerporten (intern) i det här exemplet, men du kan använda valfri kostnadsfri port.
Kontrollera requirements.txt filen för att se till att den innehåller gunicorn
.
Flask==3.1.0
gunicorn
Lägg till en .dockerignore-fil för att undanta onödiga filer från avbildningen.
.git*
**/*.pyc
.venv/
Gunicorn kan konfigureras med en gunicorn.conf.py fil. När den gunicorn.conf.py filen finns i samma katalog där gunicorn körs behöver du inte ange dess plats i Dockerfile. Mer information om hur du anger konfigurationsfilen finns i Gunicorn-inställningar.
I den här självstudien konfigurerar den föreslagna konfigurationsfilen gunicorn för att öka antalet arbetare baserat på antalet tillgängliga CPU-kärnor. Mer information om gunicorn.conf.py filinställningar finns i Gunicorn-konfiguration.
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Skapa avbildningen lokalt.
Anteckning
docker build
Om kommandot returnerar ett fel kontrollerar du att docker-deamonen körs. Kontrollera att Docker Desktop körs i Windows.
Kör avbildningen lokalt i en Docker-container.
docker run --detach --publish 5000:50505 flask-demo
http://localhost:5000
Öppna URL:en i webbläsaren för att se webbappen som körs lokalt.
Alternativet --detach
kör containern i bakgrunden. Alternativet --publish
mappar containerporten till en port på värden. Värdporten (extern) är först i paret och containerporten (intern) är den andra. Mer information finns i Docker-körningsreferens.
Kör kommandot az login för att logga in på Azure.
az login
Kör kommandot az upgrade för att kontrollera att din version av Azure CLI är aktuell.
az upgrade
Skapa en grupp med kommandot az group create .
az group create --name web-app-simple-rg --location eastus
En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. När du skapar en resursgrupp anger du en plats, till exempel eastus.
Skapa ett Azure Container Registry med kommandot az acr create . Ersätt <container-registry-name>
med ett unikt namn för din instans.
az acr create --resource-group web-app-simple-rg \
--name <container-registry-name> --sku Basic
Anteckning
Registernamnet måste vara unikt i Azure. Om du får ett fel kan du prova ett annat namn. Registernamn kan bestå av 5–50 alfanumeriska tecken. Bindestreck och understreck tillåts inte. Mer information finns i Namnregler för Azure Container Registry. Om du använder ett annat namn kontrollerar du att du använder ditt namn i stället webappacr123
för i kommandona som refererar till registret och registerartefakterna i följande avsnitt.
Ett Azure Container Registry är ett privat Docker-register som lagrar avbildningar för användning i Azure Container Instances, Azure App Service, Azure Kubernetes Service och andra tjänster. När du skapar ett register anger du ett namn, en SKU och en resursgrupp.
Skapa Docker-avbildningen i Azure med kommandot az acr build . Kommandot använder Dockerfile i den aktuella katalogen och skickar avbildningen till registret.
az acr build \
--resource-group web-app-simple-rg \
--registry <container-registry-name> \
--image webappsimple:latest .
Alternativet --registry
anger registernamnet och alternativet --image
anger avbildningsnamnet. Avbildningsnamnet är i formatet registry.azurecr.io/repository:tag
.
Skapa en App Service-plan med kommandot az appservice plan .
az appservice plan create \
--name webplan \
--resource-group web-app-simple-rg \
--sku B1 \
--is-linux
Ange en miljövariabel till ditt prenumerations-ID. Den används i parametern --scope
i nästa kommando.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
Kommandot för att skapa miljövariabeln visas för Bash-gränssnittet. Ändra syntaxen efter behov för andra miljöer.
Skapa webbappen med kommandot az webapp create .
az webapp create \
--resource-group web-app-simple-rg \
--plan webplan --name <container-registry-name> \
--assign-identity [system] \
--role AcrPull \
--scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/web-app-simple-rg \
--acr-use-identity --acr-identity [system] \
--container-image-name <container-registry-name>.azurecr.io/webappsimple:latest
Anteckningar:
Webbappens namn måste vara unikt i Azure. Om du får ett fel kan du prova ett annat namn. Namnet kan bestå av alfanumeriska tecken och bindestreck, men kan inte börja eller sluta med bindestreck. Mer information finns i Microsoft.Web name rules (Namnregler för Microsoft.Web).
Om du använder ett annat namn än webappacr123
för Azure Container Registry kontrollerar du att du uppdaterar parametern --container-image-name
på rätt sätt.
Parametrarna --assign-identity
, --role
och --scope
aktiverar den systemtilldelade hanterade identiteten i webbappen och tilldelar den AcrPull
rollen i resursgruppen. Detta ger den hanterade identiteten behörighet att hämta avbildningar från alla Azure Container Registry i resursgruppen.
Parametrarna --acr-use-identity
och --acr-identity
konfigurerar webbappen så att den använder sin systemtilldelade hanterade identitet för att hämta avbildningar från Azure Container Registry.
Det kan ta några minuter innan webbappen skapas. Du kan kontrollera distributionsloggarna med kommandot az webapp log tail . Exempel: az webapp log tail --resource-group web-app-simple-rg --name webappsimple123
Om du ser poster med "uppvärmning" i dem distribueras containern.
Url:en för webbappen är <web-app-name>.azurewebsites.net
, till exempel https://webappsimple123.azurewebsites.net
.
När du har ändrat koden kan du distribuera om till App Service med kommandona az acr build och az webapp update .
Alla Azure-resurser som skapas i den här självstudien finns i samma resursgrupp. Om du tar bort resursgruppen tas alla resurser i resursgruppen bort och det snabbaste sättet att ta bort alla Azure-resurser som används för din app.
Om du vill ta bort resurser använder du kommandot az group delete .
az group delete --name web-app-simple-rg
Du kan också ta bort gruppen i Azure Portal eller i Visual Studio Code och Azure Tools-tillägget.
Mer information finns i följande resurser:
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Distribuera och kör en containerbaserad webbapp med Azure App Service - Training
Upptäck hur du skapar en Docker-avbildning och lagrar den i Azure Container Registry, och använd sedan Azure App Service för att distribuera en webbapp som baseras på avbildningen.
Certifiering
Microsoft Certified: Azure Developer Associate - Certifications
Skapa lösningar från slutpunkt till slutpunkt i Microsoft Azure för att skapa Azure Functions, implementera och hantera webbappar, utveckla lösningar som använder Azure Storage med mera.
Dokumentation
Kom igång med Azure App Service genom att distribuera din första Python-app till Azure App Service.
Självstudie: Distribuera en Python FastAPI-webbapp med PostgreSQL - Azure App Service
Skapa en FastAPI-webbapp med en PostgreSQL-databas och distribuera den till Azure. Självstudien använder FastAPI-ramverket och appen finns i Azure App Service på Linux.
En översikt över hur du skapar och distribuerar en containerbaserad Python-webbapp (Flask eller FastAPI) i Azure Container Apps.