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.
Meer informatie over het configureren van continue integratie en continue levering (CI/CD) voor een aangepaste containerinstallatiekopieën van beheerde Azure Container Registry-opslagplaatsen of Docker Hub.
1. Ga naar het implementatiecentrum
Ga in Azure Portal naar het beheervenster voor uw Azure App Service-app.
Selecteer In het linkermenu De instellingen>.
2. Implementatiebron kiezen
Kies de implementatiebron op basis van de volgende criteria:
- Containerregister stelt CI/CD in tussen uw containerregister en App Service.
- Kies de optie GitHub Actions als u de broncode voor uw containerinstallatiekopieën in GitHub onderhoudt. Nieuwe doorvoeringen in uw GitHub-opslagplaats activeren de implementatieactie, die kan worden uitgevoerd en
docker push
rechtstreeks naar uw containerregister kan worden uitgevoerddocker build
. Vervolgens wordt uw App Service-app bijgewerkt om de nieuwe installatiekopieën uit te voeren. Zie Hoe CI/CD werkt met GitHub Actions voor meer informatie. - Zie Een Azure Web App-container implementeren vanuit Azure Pipelines om CI/CD in te stellen met Azure Pipelines.
- Selecteer Container Registry voor een Docker Compose-app.
Als u GitHub Actions kiest, selecteert u Autoriseren en volgt u de autorisatieprompts. Als u eerder bent geautoriseerd met GitHub, kunt u implementeren vanuit de opslagplaats van een andere gebruiker door Account wijzigen te selecteren.
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. Om aan de slag te gaan, zie Zelfstudie: Een sidecarcontainer configureren voor aangepaste containers in Azure App Service (preview).
Als u een Docker Compose-app met meerdere containers wilt implementeren, selecteert u Docker Compose in containertype.
Als u de vervolgkeuzelijst Containertype niet ziet, schuift u terug naar bron en selecteert u Container Registry.
Selecteer in registerbron waar uw containerregister zich bevindt. Als dit geen Azure Container Registry of Docker Hub is, selecteert u Privéregister.
Notitie
Als uw app met meerdere containers (Docker Compose) meer dan één privé-image gebruikt, moet u ervoor zorgen dat de privé-images zich in hetzelfde privéregister bevinden en toegankelijk zijn met dezelfde gebruikersgegevens. Als uw app met meerdere containers alleen openbare installatiekopieën gebruikt, selecteert u Docker 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 in hetzelfde abonnement weergegeven als uw app. Selecteer het gewenste register.
Als u wilt implementeren vanuit een register in een ander abonnement, selecteert u in plaats daarvan Privéregister in registerbron .
Als u beheerde identiteiten wilt gebruiken om toegang tot Azure Container Registry te vergrendelen, raadpleegt u:
- Door het systeem toegewezen beheerde identiteiten gebruiken met App Service en Azure Container Registry
- Door de gebruiker toegewezen beheerde identiteiten gebruiken met App Service en Azure Container Registry
Selecteer de afbeelding en tag die u wilt implementeren. U kunt ervoor kiezen om de opstartopdracht in het opstartbestand te typen.
Volg de volgende stap, afhankelijk van de waarde containertype :
- Selecteer voor Docker Compose het register voor uw privé-afbeeldingen. Selecteer Bestand kiezen om uw Docker Compose-bestand te uploaden of plak de inhoud van het Docker Compose-bestand in de configuratie.
- Voor Single Container selecteert u het Image en de Tag om te implementeren. U kunt ervoor kiezen om de opstartopdracht in het opstartbestand te typen.
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 CI/CD-integratie wilt inschakelen, selecteert u Aan in Continue implementatie.
Notitie
Als u GitHub Actions in de bron selecteert, ziet u deze optie niet omdat CI/CD rechtstreeks wordt verwerkt door GitHub Actions. In plaats daarvan ziet u een sectie Werkstroomconfiguratie , waar u een voorbeeldbestand kunt selecteren om 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 repository stuurt updates naar deze webhook wanneer de geselecteerde afbeelding wordt bijgewerkt met docker push
. De webhook zorgt ervoor dat uw App Service-app opnieuw wordt opgestart en draait docker pull
om de bijgewerkte afbeelding op te halen.
Om ervoor te zorgen dat de webhook goed functioneert, is het essentieel om de optie Inloggegevens voor Basisverificatie in uw web-app in te schakelen. Als u dit niet doet, krijgt u mogelijk de foutmelding '401 niet geautoriseerd' voor de webhook.
Ga naar de algemene instellingen> van uw web-app om te controleren of Basic Auth Publishing Credentials is ingeschakeld. Zoek naar de sectie Platforminstelling en selecteer vervolgens de optie Basisautorisatie publicatiegegevens.
Voor andere privéregisters kunt u handmatig of als stap in een CI/CD-pijplijn naar de webhook posten. Selecteer in webhook-URL de knop Kopiëren om de URL van de webhook op te halen.
Notitie
Ondersteuning voor Docker Compose-apps (meerdere containers) is beperkt. Voor Azure Container Registry maakt App Service een webhook in het geselecteerde register met het register als scope. 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. U zou de webhook willen aanpassen naar een beperktere reikwijdte. Docker Hub biedt geen ondersteuning voor webhooks op registerniveau. Je moet de webhooks handmatig toevoegen aan de images die zijn opgegeven in je Docker Compose-bestand.
4. Sla uw instellingen op
5. Sla uw instellingen op
Selecteer Opslaan.
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:
- Hiermee wordt een GitHub Actions-werkstroombestand in uw GitHub-opslagplaats geplaatst voor het afhandelen van build- en implementatietaken in App Service.
- Hiermee worden de referenties voor uw privéregister toegevoegd als GitHub-geheimen. Het gegenereerde werkstroombestand voert de
Azure/docker-login
actie uit om u aan te melden met uw privéregister en wordt vervolgens uitgevoerddocker push
om ernaar te implementeren. - Hiermee wordt het publicatieprofiel voor uw app toegevoegd als een GitHub-geheim. Het gegenereerde werkstroombestand maakt gebruik van dit geheim voor verificatie bij App Service en voert vervolgens de actie uit om de
Azure/webapps-deploy
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. De werkstroom moet eindigen met de
Azure/webapps-deploy
actie 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. Voeg deze en de vereiste GitHub-geheimen handmatig toe aan uw opslagplaats. Deze methode biedt u geen 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 behulp van de az ad sp create-for-rbac
opdracht in de Azure CLI. Vervang >, > en > 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.
Ga in GitHub naar uw opslagplaats en selecteerInstellingengeheimen>>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 die vergelijkbaar is met 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
Voer de opdracht uit az webapp config container set
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 een Docker Compose-bestand lokaal voor en voert az webapp config container set
u deze 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, voert u deze uit az webapp deployment container config
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>'