Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zjistěte, jak nakonfigurovat kontinuální integraci a průběžné doručování (CI/CD) pro vlastní image kontejneru ze spravovaných úložišť Azure Container Registry nebo Docker Hubu.
1. Přejděte do centra nasazení.
Na webu Azure Portal přejděte do podokna správy vaší aplikace Azure App Service.
V nabídce vlevo vyberte Centrum nasazení>Nastavení.
2. Zvolte zdroj nasazení.
Zvolte zdroj nasazení na základě následujících kritérií:
- Registr kontejnerů nastaví CI/CD mezi registrem kontejnerů a službou App Service.
- Zvolte možnost GitHub Actions , pokud udržujete zdrojový kód image kontejneru na GitHubu. Nové komity do vašeho úložiště na GitHubu spustí akci nasazení, která může spustit
docker build
adocker push
přímo v registru kontejnerů. Potom aktualizuje aplikaci App Service tak, aby spustila novou image. Další informace najdete v tématu Jak CI/CD funguje s GitHub Actions. - Informace o nastavení CI/CD pomocí Azure Pipelines najdete v tématu Nasazení kontejneru webové aplikace Azure ze služby Azure Pipelines.
- Pro aplikaci Docker Compose vyberte Container Registry.
Pokud zvolíte GitHub Actions, vyberte Autorizovat a postupujte podle pokynů k autorizaci. Pokud jste dříve autorizovali GitHub, můžete ho nasadit z jiného úložiště uživatele výběrem možnosti Změnit účet.
Po autorizaci účtu Azure pomocí GitHubu vyberte organizaci, úložiště a větev , ze které chcete provést nasazení.
2. Konfigurace nastavení registru
3. Konfigurace nastavení registru
Poznámka:
Sajdkárové kontejnery (Preview) nahradí vícekontenerové aplikace (Docker Compose) ve službě App Service. Pokud chcete začít, přečtěte si kurz: Konfigurace kontejneru sajdkáře pro vlastní kontejnery ve službě Azure App Service (Preview)
Pokud chcete nasadit vícekontenerovou aplikaci ( Docker Compose), vyberte Docker Compose v typu kontejneru.
Pokud rozevírací seznam Typ kontejneru nevidíte, posuňte se zpět ke zdroji a vyberte Container Registry.
Ve zdroji registru vyberte, kde je váš registr kontejneru. Pokud se nejedná o Službu Azure Container Registry nebo Docker Hub, vyberte privátní registr.
Poznámka:
Pokud vaše aplikace Pro více kontejnerů (Docker Compose) používá více než jednu privátní image, ujistěte se, že jsou privátní image ve stejném privátním registru a jsou přístupné se stejnými přihlašovacími údaji uživatele. Pokud vaše vícekontejnerová aplikace používá jenom veřejné image, vyberte Docker Hub, i když některé image nejsou v Docker Hubu.
Postupujte podle následujících kroků výběrem karty, která odpovídá vaší volbě.
V rozevíracím seznamu Registr se zobrazí registry ve stejném předplatném jako vaše aplikace. Vyberte požadovaný registr.
Pokud chcete nasadit z registru v rámci jiného předplatného, vyberte privátní registr jako zdroj registru.
Informace o použití spravovaných identit k uzamčení přístupu ke službě Azure Container Registry najdete tady:
- Používání spravovaných identit přiřazených systémem se službou App Service a Azure Container Registry
- Jak používat spravované identity přiřazené uživatelem se službou App Service a Službou Azure Container Registry
Vyberte Image a Tag, které chcete nasadit. Do spouštěcího souboru můžete zadat spouštěcí příkaz.
Postupujte podle dalšího kroku v závislosti na hodnotě typu kontejneru :
- Pro Docker Compose vyberte registr pro vaše privátní image. Vyberte Zvolit soubor pro nahrání souboru Docker Compose nebo jednoduše vložte obsah souboru Docker Compose do konfigurace.
- Pro single container vyberte Image a tag k nasazení. Do spouštěcího souboru můžete zadat spouštěcí příkaz.
App Service při spuštění kontejneru připojí řetězec ve spouštěcím souboru na konec příkazu (jako docker run
segment [COMMAND] [ARG...]
).
3. Povolení CI/CD
4. Povolení CI/CD
App Service podporuje integraci CI/CD se službou Azure Container Registry a Docker Hubem. Pokud chcete povolit integraci CI/CD, vyberte při průběžném nasazovánízapnuto.
Poznámka:
Pokud ve zdroji vyberete GitHub Actions, tuto možnost nevidíte, protože CI/CD zpracovává GitHub Actions přímo. Místo toho se zobrazí část Konfigurace pracovního postupu , kde můžete vybrat soubor Preview a zkontrolovat soubor pracovního postupu. Azure uloží tento soubor do vybraného zdrojového úložiště GitHubu pro provádění úkolů sestavení a nasazení. Další informace najdete v tématu Jak CI/CD funguje s GitHub Actions.
Když tuto možnost povolíte, App Service přidá webhook do úložiště ve službě Azure Container Registry nebo Docker Hubu. Vaše úložiště publikuje do tohoto webhooku při každé aktualizaci vybraného obrázku s docker push
. Webhook způsobí restartování a spuštění docker pull
aplikace App Service, aby získala aktualizovanou image.
Abyste zajistili správné fungování webhooku, je nezbytné povolit v rámci webové aplikace možnost Základní autentizační údaje pro publikování. Pokud to neuděláte, může se zobrazit chyba "401 Neautorizováno" pro webhook.
Pokud chcete ověřit, jestli jsou povolené základní ověřovací údaje pro publikování, přejděte do konfigurace>Obecná nastavení vaší webové aplikace. Vyhledejte část Nastavení platformy a pak vyberte možnost Základní ověřovací přihlašovací údaje pro publikování.
U jiných privátních registrů můžete webhook publikovat ručně nebo jako krok v kanálu CI/CD. V adrese URL webhooku vyberte tlačítko Kopírovat a získejte adresu URL webhooku.
Poznámka:
Podpora vícekontenerových aplikací (Docker Compose) je omezená. Pro Azure Container Registry vytvoří App Service ve vybraném registru webhook s registrem jako oborem. A docker push
do libovolného úložiště v registru (včetně těch, na které se neodkazuje váš soubor Docker Compose), aktivuje restartování aplikace. Možná budete chtít webhook upravit na užší obor. Docker Hub nepodporuje webhooky na úrovni registru. Webhooky musíte přidat ručně do imagí zadaných v souboru Docker Compose.
4. Uložte nastavení.
5. Uložte nastavení.
Vyberte Uložit.
Jak CI/CD funguje s GitHub Actions
Pokud ve zdroji zvolíte GitHub Actions(viz Volba zdroje nasazení), App Service nastaví CI/CD následujícími způsoby:
- Uloží soubor pracovního postupu GitHub Actions do úložiště GitHub, aby zvládl sestavení a nasazení úloh do služby App Service.
- Přidá přihlašovací údaje pro privátní registr jako tajné kódy GitHubu. Vygenerovaný soubor pracovního postupu spustí akci
Azure/docker-login
pro přihlášení s vaším soukromým registrem a potom spustídocker push
, aby na něj nasadil. - Přidá publikační profil pro vaši aplikaci jako tajemství GitHubu. Vygenerovaný soubor pracovního postupu používá toto tajemství k ověření ve službě App Service, a potom spustí
Azure/webapps-deploy
akci pro konfiguraci aktualizovaného obrazu, což aktivuje restart aplikace, aby se stáhl aktualizovaný obraz. - Zaznamenává informace z protokolů spuštění pracovního postupu a zobrazuje je na kartě Protokoly v Centru nasazení vaší aplikace.
Poskytovatele sestavení GitHub Actions můžete přizpůsobit následujícími způsoby:
- Upravte soubor pracovního postupu po vygenerování v úložišti GitHub. Další informace najdete v tématu Syntaxe pracovního postupu pro GitHub Actions. Pracovní postup musí končit
Azure/webapps-deploy
akcí, která aktivuje restartování aplikace. - Pokud je vybraná větev chráněná, můžete zobrazit náhled souboru pracovního postupu bez uložení konfigurace. Přidejte je a požadované tajné kódy GitHubu do úložiště ručně. Tato metoda neposkytuje integraci logů s Azure Portal.
- Místo profilu publikování nasaďte pomocí služebního principálu v Microsoft Entra ID.
Ověřování pomocí instančního objektu
Tato volitelná konfigurace ve vygenerovaném souboru pracovního postupu nahrazuje výchozí ověřování profily pro publikování.
Vygenerujte service principal pomocí příkazu az ad sp create-for-rbac
v Azure CLI. V následujícím příkladu nahraďte <id> předplatného, > skupiny a <název> aplikace vlastními hodnotami. Uložte celý výstup JSON pro další krok, včetně nejvyšší úrovně {}
.
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
Důležité
Pro zajištění bezpečnosti udělte minimální požadovaný přístup ke služebnímu principalu. Obor v předchozím příkladu je omezený na konkrétní aplikaci App Service, nikoli na celou skupinu prostředků.
Na GitHubu přejděte do úložiště a vyberte Nastavení>tajných kódů>Přidat nový tajný klíč. Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Dejte tajemství jméno, jako AZURE_CREDENTIALS
.
V souboru pracovního postupu vygenerovaného centrem nasazení upravte azure/webapps-deploy
krok s kódem podobným následujícímu příkladu:
- 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
Automatizace s CLI
Pokud chcete nakonfigurovat registr kontejneru a image Dockeru, spusťte az webapp config container set
příkaz .
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>'
Pokud chcete nakonfigurovat vícekontenerovou aplikaci (Docker Compose), připravte místně soubor Docker Compose a spusťte az webapp config container set
ho s parametrem --multicontainer-config-file
. Pokud váš soubor Docker Compose obsahuje privátní image, přidejte --docker-registry-server-*
parametry, jak je znázorněno v předchozím příkladu.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
Chcete-li nakonfigurovat CI/CD z registru kontejneru do aplikace, spusťte az webapp deployment container config
s parametrem --enable-cd
. Příkaz vypíše adresu URL webhooku, ale webhook musíte v registru vytvořit ručně v samostatném kroku. Následující příklad povolí CI/CD ve vaší aplikaci a pak pomocí adresy URL webhooku ve výstupu vytvoří webhook ve službě 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>'