Continue implementatie met aangepaste containers in Azure-app Service

In deze zelfstudie configureert u continue implementatie voor een aangepaste containerinstallatiekopieën van beheerde Azure Container Registry-opslagplaatsen of Docker Hub.

1. Ga naar Het Implementatiecentrum

Navigeer in Azure Portal naar de beheerpagina voor uw App Service-app.

Klik in het linkermenu op Deployment Center> Instellingen.

2. Implementatiebron kiezen

Kies de implementatiebron, afhankelijk van uw scenario:

Notitie

Selecteer Container Registry voor een Docker Compose-app.

Als u GitHub Actions kiest, klikt u opAutoriseren en volgt u de autorisatieprompts. Als u al eerder bent geautoriseerd met GitHub, kunt u implementeren vanuit de opslagplaats van een andere gebruiker door op Account wijzigen te klikken.

Nadat u uw Azure-account met GitHub hebt geautoriseerd, selecteert u de organisatie, opslagplaats en vertakking waaruit u wilt implementeren.

2. Registerinstellingen configureren

3. Registerinstellingen configureren

Notitie

Sidecar-containers (preview) slagen in apps met meerdere containers (Docker Compose) in App Service. Zie Zelfstudie: Een sidecarcontainer configureren voor aangepaste container in Azure-app Service (preview) om aan de slag te gaan.

Als u een Docker Compose-app met meerdere containers wilt implementeren, selecteert uDocker Compose in containertype.

Als u de vervolgkeuzelijst Containertype niet ziet, schuift u terug naar bron en selecteert uContainer Registry.

Selecteer in registerbron waar uw containerregister zich bevindt. Als dit geen Azure Container Registry of Docker Hub is, selecteert uPrivéregister.

Notitie

Als uw Docker Compose-app meerdere containers (Docker Compose) meer dan één privé-installatiekopieën gebruikt, moet u ervoor zorgen dat de persoonlijke installatiekopieën zich in hetzelfde privéregister bevinden en toegankelijk zijn met dezelfde gebruikersreferenties. Als uw app met meerdere containers alleen openbare installatiekopieën gebruikt, selecteert uDocker Hub, zelfs als sommige installatiekopieën zich niet in Docker Hub bevinden.

Volg de volgende stappen door het tabblad te selecteren dat overeenkomt met uw keuze.

In de vervolgkeuzelijst Register worden de registers weergegeven in hetzelfde abonnement als uw app. Selecteer het gewenste register.

Notitie

Selecteer de installatiekopieën en tags die u wilt implementeren. Typ desgewenst de opstartopdracht in het opstartbestand.

Volg de volgende stap, afhankelijk van het containertype:

  • Selecteer voor Docker Compose het register voor uw persoonlijke installatiekopieën. Klik opBestand kiezen om het Docker Compose-bestand te uploaden of plak de inhoud van het Docker Compose-bestand in de configuratie.
  • Voor één container selecteert u de installatiekopieën en tags die u wilt implementeren. Typ desgewenst de opstartopdracht in het opstartbestand.

App Service voegt de tekenreeks in het opstartbestand toe aan het einde van de docker run opdracht (als het [COMMAND] [ARG...] segment) bij het starten van de container.

3. CI/CD inschakelen

4. CI/CD inschakelen

App Service ondersteunt CI/CD-integratie met Azure Container Registry en Docker Hub. Als u deze wilt inschakelen, selecteert uAan in Continue implementatie.

Notitie

Als u GitHub Actions in de bron selecteert, krijgt u deze optie niet omdat CI/CD rechtstreeks wordt verwerkt door GitHub Actions. In plaats daarvan ziet u een sectie Werkstroomconfiguratie, waar u op Voorbeeldbestand kunt klikkenom het werkstroombestand te controleren. Azure zet dit bestand door in de geselecteerde GitHub-bronopslagplaats voor het afhandelen van build- en implementatietaken. Zie Hoe CI/CD werkt met GitHub Actions voor meer informatie.

Wanneer u deze optie inschakelt, voegt App Service een webhook toe aan uw opslagplaats in Azure Container Registry of Docker Hub. Uw opslagplaats plaatst berichten op deze webhook wanneer de geselecteerde afbeelding wordt bijgewerkt met docker push. De webhook zorgt ervoor dat uw App Service-app opnieuw wordt opgestart en uitgevoerd docker pull om de bijgewerkte installatiekopieën op te halen.

Notitie

Om ervoor te zorgen dat de webhook goed functioneert, is het essentieel om de optie Referenties voor het publiceren van basisverificatie in uw web-app in te schakelen. Als u dit niet doet, kan dit leiden tot een fout van 401 die niet is geautoriseerd voor de webhook. Voer de volgende stappen uit om te controleren of Basic Auth Publishing Credentials is ingeschakeld:

  • Navigeer naar de algemene > configuratie van uw web-app Instellingen.
  • Zoek naar de sectie Platforminstelling , waar u de optie Publicatiereferenties voor basisverificatie vindt.

Voor andere privéregisters kunt u handmatig of als stap in een CI/CD-pijplijn posten naar de webhook. Klik in de WEBhook-URL op de knop Kopiëren om de URL van de webhook op te halen.

Notitie

Ondersteuning voor Apps met meerdere containers (Docker Compose) is beperkt:

  • Voor Azure Container Registry maakt App Service een webhook in het geselecteerde register met het register als bereik. Een docker push naar een opslagplaats in het register (inclusief de opslagplaatsen waarnaar niet wordt verwezen door uw Docker Compose-bestand) activeert een app opnieuw opstarten. Mogelijk wilt u de webhook wijzigen in een smaller bereik.
  • Docker Hub biedt geen ondersteuning voor webhooks op registerniveau. U moet de webhooks handmatig toevoegen aan de installatiekopieën die zijn opgegeven in uw Docker Compose-bestand.

4. Sla uw instellingen op

5. Sla uw instellingen op

Klik opOpslaan.

Hoe CI/CD werkt met GitHub Actions

Als u GitHub Actions in Source kiest (zie Implementatiebron kiezen), stelt App Service CI/CD op de volgende manieren in:

  • Zet een Werkstroombestand voor GitHub Actions op in uw GitHub-opslagplaats voor het afhandelen van build- en implementatietaken in App Service.
  • Voegt de referenties voor uw privéregister toe als GitHub-geheimen. Het gegenereerde werkstroombestand voert de actie Azure/docker-login uit om u aan te melden met uw privéregister en wordt vervolgens uitgevoerd docker push om ernaar te implementeren.
  • Hiermee voegt u het publicatieprofiel voor uw app toe als GitHub-geheim. Het gegenereerde werkstroombestand maakt gebruik van dit geheim voor verificatie met App Service en voert vervolgens de actie Azure/webapps-deploy uit om de bijgewerkte installatiekopie te configureren, waardoor een app opnieuw wordt opgestart om de bijgewerkte installatiekopie op te halen.
  • Hiermee worden gegevens uit de logboeken voor werkstroomuitvoering vastgelegd en weergegeven op het tabblad Logboeken in het Implementatiecentrum van uw app.

U kunt de Build-provider voor GitHub Actions op de volgende manieren aanpassen:

  • Pas het werkstroombestand aan nadat het is gegenereerd in uw GitHub-opslagplaats. Zie Werkstroomsyntaxis voor GitHub Actions voor meer informatie. Zorg ervoor dat de werkstroom eindigt met de actie Azure/webapps-deploy om het opnieuw opstarten van een app te activeren.
  • Als de geselecteerde vertakking is beveiligd, kunt u nog steeds een voorbeeld van het werkstroombestand bekijken zonder de configuratie op te slaan en deze vervolgens handmatig en de vereiste GitHub-geheimen in uw opslagplaats toe te voegen. Met deze methode beschikt u niet over de logboekintegratie met Azure Portal.
  • In plaats van een publicatieprofiel implementeert u met behulp van een service-principal in Microsoft Entra-id.

Verifiëren met een service-principal

Deze optionele configuratie vervangt de standaardverificatie door publicatieprofielen in het gegenereerde werkstroombestand.

Genereer een service-principal met de opdracht az ad sp create-for-rbac in de Azure CLI. Vervang in het volgende voorbeeld abonnements-id>, <groepsnaam> en <app-naam> door uw eigen waarden.< Sla de volledige JSON-uitvoer op voor de volgende stap, inclusief het hoogste niveau {}.

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

Belangrijk

Voor beveiliging verleent u de minimaal vereiste toegang tot de service-principal. Het bereik in het vorige voorbeeld is beperkt tot de specifieke App Service-app en niet de hele resourcegroep.

Blader in GitHub naar uw opslagplaats en selecteer vervolgens Instellingen > Geheimen > een nieuw geheim toevoegen. Plak de volledige JSON-uitvoer van de Azure CLI-opdracht in het waardeveld van het geheim. Geef het geheim een naam zoals AZURE_CREDENTIALS.

Wijzig in het werkstroombestand dat is gegenereerd door het Implementatiecentrum de azure/webapps-deploy stap met code, zoals in het volgende voorbeeld:

- 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

Automatiseren met CLI

Voeraz webapp config container set uit om het containerregister en de Docker-installatiekopieën te configureren.

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>'

Als u een Docker Compose-app met meerdere containers wilt configureren, bereidt u lokaal een Docker Compose-bestand voor en voert uaz webapp config container set uit met de --multicontainer-config-file parameter. Als uw Docker Compose-bestand persoonlijke installatiekopieën bevat, voegt u parameters toe--docker-registry-server-*, zoals wordt weergegeven in het vorige voorbeeld.

az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>

Als u CI/CD vanuit het containerregister naar uw app wilt configureren, voertu az webapp deployment container config uit met de --enable-cd parameter. De opdracht voert de webhook-URL uit, maar u moet de webhook handmatig in uw register maken in een afzonderlijke stap. In het volgende voorbeeld wordt CI/CD in uw app ingeschakeld en wordt vervolgens de webhook-URL in de uitvoer gebruikt om de webhook te maken in 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>'

Meer resources