Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du konfigurerar kontinuerlig integrering och kontinuerlig leverans (CI/CD) för en anpassad containeravbildning från hanterade Azure Container Registry-lagringsplatser eller Docker Hub.
1. Gå till Distributionscenter
I Azure-portalen går du till hanteringsfönstret för din Azure App Service-app.
I sidomenyn under Distribution väljer du Distributionscenter. Välj fliken Inställningar .
2. Välj kodkälla
I listrutan Källa väljer du distributionskällan baserat på följande kriterier:
- Containerregistret konfigurerar CI/CD mellan ditt containerregister och App Service.
- Välj alternativet GitHub Actions om du underhåller källkoden för containeravbildningen i GitHub. Nya åtaganden till din GitHub-lagringsplats utlöser deploy-åtgärden, som kan köra
docker buildochdocker pushdirekt till ditt containerregister. Den uppdaterar sedan App Service-appen för att köra den nya avbildningen. Mer information finns i Så här fungerar CI/CD med GitHub Actions. - Information om hur du konfigurerar CI/CD med Azure Pipelines finns i Distribuera en Azure Web App-container från Azure Pipelines.
- För en Docker Compose-app väljer du Container Registry.
Om du väljer GitHub Actions väljer du Auktorisera och följer auktoriseringsanvisningarna. Om du tidigare har auktoriserat med GitHub kan du distribuera från en annan användares lagringsplats genom att välja Ändra konto.
När du har auktorisera ditt Azure-konto med GitHub väljer du den organisation, lagringsplats och gren som du vill distribuera från.
2. Konfigurera registerinställningar
3. Konfigurera registerinställningar
Kommentar
Sidovagnscontainrar kommer att ersätta multi-containerapplikationer (Docker Compose) i App Service. Kom igång genom att läsa Självstudie: Konfigurera en sidovagnscontainer för anpassade containrar i Azure App Service.
Om du vill distribuera en Docker Compose-app (flera containrar) väljer du Docker Compose i ContainerTyp.
Om du inte ser listrutan Containertyp rullar du tillbaka till Källa och väljer Container Registry.
I Registerkälla väljer du var containerregistret finns. Om det inte är Azure Container Registry eller Docker Hub väljer du Privat register.
Kommentar
Om appen För flera containrar (Docker Compose) använder mer än en privat avbildning kontrollerar du att de privata avbildningarna finns i samma privata register och är tillgängliga med samma användarautentiseringsuppgifter. Om din app för flera containrar endast använder offentliga avbildningar väljer du Docker Hub, även om vissa avbildningar inte finns i Docker Hub.
Följ nästa steg genom att välja den flik som matchar ditt val.
Listrutan Register visar registren i samma prenumeration som din app. Välj det register som du vill använda.
Om du vill distribuera från ett register i en annan prenumeration väljer du Privat register i registerkällan i stället.
Information om hur du använder hanterade identiteter för att låsa Åtkomst till Azure Container Registry finns i:
- Så här använder du systemtilldelade hanterade identiteter med App Service och Azure Container Registry
- Använda användartilldelade hanterade identiteter med App Service och Azure Container Registry
Välj bild och tagg som ska distribueras. Du kan välja att skriva startkommandot i Startfil.
Följ nästa steg, beroende på värdet containertyp :
- För Docker Compose väljer du registret för dina privata avbildningar. Välj Välj fil för att ladda upp Docker Compose-filen eller klistra bara in innehållet i Docker Compose-filen i Config.
- För Enskild container väljer du den avbildning och tagg som ska distribueras. Du kan välja att skriva startkommandot i Startfil.
App Service lägger till strängen i Startfil i slutet av docker run när du startar din container.
3. Aktivera CI/CD
4. Aktivera CI/CD
App Service stöder CI/CD-integrering med Azure Container Registry och Docker Hub. Om du vill aktivera CI/CD-integrering väljer du På i Kontinuerlig distribution.
Kommentar
Om du väljer GitHub Actions i Källa ser du inte det här alternativet eftersom CI/CD hanteras direkt av GitHub Actions. I stället visas avsnittet Arbetsflödeskonfiguration , där du kan välja Förhandsgranska fil för att inspektera arbetsflödesfilen. Azure lägger in den här filen i ditt valda GitHub-repository för att hantera bygg- och distributionsuppgifter. Mer information finns i Så här fungerar CI/CD med GitHub Actions.
När du aktiverar det här alternativet lägger App Service till en webhook till lagringsplatsen i Azure Container Registry eller Docker Hub. Ditt arkiv skickar data till denna webhook när den valda bilden uppdateras med docker push. Webhooken gör att App Service-appen startas om och kör docker pull för att få den uppdaterade bilden.
För att säkerställa att webhooken fungerar korrekt är det viktigt att aktivera alternativet Grundläggande publiceringsautentisering i din webbapp. Om du inte gör det kan du få felet "401 obehörig" för webhooken.
Om du vill kontrollera om grundläggande autentiseringsuppgifter för publicering är aktiverat, går du till webbappens konfiguration och >. Leta efter avsnittet Plattformsinställning och välj sedan alternativet Grundläggande autentiseringsuppgifter för publicering.
För andra privata register kan du manuellt skicka ett meddelande till webhooken eller göra det som ett steg i en CI/CD-pipeline. I Webhook URL väljer du knappen Kopiera för att hämta webhookens URL.
Spara inställningarna genom att välja Spara.
Kommentar
Stödet för Docker Compose-appar (multicontainer) är begränsat. För Azure Container Registry skapar App Service en webhook i det valda registret med registret som omfång. En docker push till valfri lagringsplats i registret (inklusive de som inte refereras av Docker Compose-filen) utlöser en omstart av appen. Du kanske vill ändra webhooken till en mer begränsad räckvidd. Docker Hub stöder inte webhooks på registernivå. Du måste manuellt lägga till webhooks till de bilder som specificeras i din Docker Compose-fil.
Så här fungerar CI/CD med GitHub Actions
Om du väljer GitHub Actions i listrutan Välj kodkälla konfigurerar App Service CI/CD på följande sätt:
- Den sätter in en GitHub Actions-arbetsflödesfil på din GitHub-lagringsplats för att hantera bygg- och distributionsuppgifter till App Service.
- Den lägger till autentiseringsuppgifterna för ditt privata register som GitHub-hemligheter. Den genererade arbetsflödesfilen kör
Azure/docker-loginåtgärden för att logga in med ditt privata register och kördocker pushsedan för att distribuera till den. - Den lägger till publiceringsprofilen för din app som en GitHub-hemlighet. Den genererade arbetsflödesfilen använder den här hemligheten för att autentisera
Azure/webapps-deploymed App Service och kör sedan åtgärden för att konfigurera den uppdaterade avbildningen, vilket utlöser en omstart av appen för att hämta den uppdaterade avbildningen. - Den samlar in information från arbetsflödets körningsloggar och visar den på fliken Loggar i appens distributionscenter.
Du kan anpassa GitHub Actions-byggprovidern på följande sätt:
- Anpassa arbetsflödesfilen när den har genererats på din GitHub-lagringsplats. Mer information finns i Arbetsflödessyntax för GitHub Actions. Arbetsflödet måste avslutas med åtgärden
Azure/webapps-deployför att utlösa en omstart av appen. - Om den valda grenen är skyddad kan du fortfarande förhandsgranska arbetsflödesfilen utan att spara konfigurationen. Lägg till den och nödvändiga GitHub-hemligheter i lagringsplatsen manuellt. Den här metoden ger dig inte loggintegrering med Azure Portal.
- I stället för en publiceringsprofil distribuerar du med hjälp av tjänstens huvudnamn i Microsoft Entra-ID.
Autentisera med tjänstens huvudnamn
Den här valfria konfigurationen ersätter standardautentiseringen med publiceringsprofiler i den genererade arbetsflödesfilen.
Generera ett huvudnamn för az ad sp create-for-rbac tjänsten med hjälp av kommandot i Azure CLI. I följande exempel ersätter du <prenumerations-ID>, <gruppnamn> och <appnamn> med dina egna värden. Spara hela JSON-utdata för nästa steg, inklusive den översta nivån {}.
az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
Viktigt!
För säkerhetsskull, bevilja den minimalt nödvändiga åtkomsten till tjänstehuvudmannen. Omfånget i föregående exempel är begränsat till den specifika App Service-appen och inte hela resursgruppen.
I GitHub går du till lagringsplatsen och väljer sedan Inställningar>Hemligheter>Lägg till en ny hemlighet. Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten ett namn som AZURE_CREDENTIALS.
I arbetsflödesfilen som genereras av Distributionscenter ändrar du azure/webapps-deploy steget med kod som liknar följande exempel:
- name: Sign in to Azure
# Use the GitHub secret you added
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
with:
app-name: '<app-name>'
slot-name: 'production'
images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
- name: Sign out of Azure
run: |
az logout
Automatisera med CLI
Om du vill konfigurera containerregistret och Docker-avbildningen kör du az webapp config container set.
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'
Om du vill konfigurera en Docker Compose-app (flera containrar) förbereder du en Docker Compose-fil lokalt och kör az webapp config container set sedan med parametern --multicontainer-config-file . Om Docker Compose-filen innehåller privata avbildningar lägger du till --docker-registry-server-* parametrar enligt föregående exempel.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
För att konfigurera CI/CD från containerregistret till din app, kör az webapp deployment container config med parametern --enable-cd. Kommandot matar ut webhookens URL, men du måste skapa webhooken i registret manuellt i ett separat steg. Följande exempel aktiverar CI/CD i din app och använder sedan webhook-URL:en i utdata för att skapa webhooken i Azure Container Registry.
ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)
az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'