Nasazení kontejnerů služby App Service pomocí rozhraní příkazového řádku pro vývojáře Azure

Pomocí Azure Developer CLI (azd) můžete svou aplikaci nasadit do služby Azure App Service. Tento režim nasazení spouští vaši aplikaci jako Linux Web App for Containers. Když služba používá host: appservice se sestavením založeným na Dockeru, azd deploy sestaví bitovou kopii, nahraje ji do Azure Container Registry (ACR) a nastaví existující web služby App Service tak, aby používal novou bitovou kopii.

Vzhledem k tomu, že azd deploy aktualizuje pouze referenci na image, musí vaše infrastruktura před nasazením připravit lokalitu pro provoz v kontejneru. Znalost toho, co tento režim nasazení očekává, vám pomůže správně nastavit lokalitu a vyhnout se neúspěšným nasazením.

Tento článek vysvětluje, jak tento režim nasazení funguje, co už vaše infrastruktura musí nakonfigurovat a jak se liší od containerapp hostitele. Předpokládá se, že jste obeznámeni s projekty azure.yaml, azd a příkazy azd pro zřizování a nasazení.

Jak azd nasazuje kontejner do App Service

Když služba nastaví host: appservice s konfigurací kontejneru, azd deploy považuje cílový web za Web App for Containers a provede následující akce:

  • Vytvoří image kontejneru ze souboru Dockerfile.
  • Nahraje image do instance ACR definované vaší infrastrukturou.
  • Aktualizuje nastavení webu linuxFxVersion na DOCKER|<image>, aby web používal váš image.

azd deploy aktualizuje pouze odkaz na image pro existující web. Nevytvoří ani nenakonfiguruje základní infrastrukturu, takže lokalita už musí být připravená pro kontejnery před nasazením.

Konfigurace služby v azure.yaml

Nasazení kontejneru do služby App Service používá host: appservice se sestavením založeným na Dockeru. Nastavte language: dockernebo přidejte docker konfiguraci, která odkazuje na váš soubor Dockerfile:

services:
  web:
    project: ./src/web
    host: appservice
    language: docker
    docker:
      path: ./Dockerfile

Díky této konfiguraci azd sestaví image z ./src/web/Dockerfile, odešle ji do vašeho registru a aktualizuje web App Service tak, aby spouštěl tuto image. appservice Hostitel nepoužívá nastavení na úrovni env: služby, proto nakonfigurujte nastavení aplikace prostřednictvím vaší infrastruktury.

Požadavky na infrastrukturu pro web služby App Service připravené pro kontejner

azd deploynezřizuje ani neupravuje infrastrukturu appservice pro hostitele, takže stávající Bicep nebo Terraform musí před nasazením nakonfigurovat web jako aplikaci typu kontejner pro Linux. Infrastruktura musí splňovat následující kontrakt:

Requirement Podrobnosti
Plán služby App Service pro Linux Plán běží na Linuxu (kind: linux s reserved: true). App Service podporuje pouze kontejnery v Linuxu, nikoli Windows.
Lokalita připravená pro kontejnery linuxFxVersion webu používá hodnotu DOCKER\|. Zástupný obrázek je v pořádku, protože azd deploy jej nahradí obrazem, který vytvoří a nahraje.
Jeden kontejner Na webu běží jeden kontejner. Hostitel appservice nepodporuje vícekontenerové konfigurace ani konfigurace Docker Compose.
Přístup k ACR pomocí spravované identity Web se ověřuje ve službě ACR prostřednictvím spravované identity přiřazené uživatelem, například acrUseManagedIdentityCreds: true pomocí acrUserManagedIdentityID. Hostitel appservice nepodporuje přihlašovací údaje správce.

azd deploy ve srovnání s provision a up

Nasazení kontejneru do služby App Service zahrnuje dvě oblasti, infrastrukturu a kód aplikace, jimž odpovídají různé příkazy azd:

Command Jak funguje Kdy ji použít
azd provision Vytvoří a nakonfiguruje prostředky Azure na základě vašich šablon Bicep nebo Terraformu, včetně webu aplikace ve službě App Service připraveného pro kontejnery a ACR. Použijte ho, když se infrastruktura změní nebo lokalita ještě neexistuje.
azd deploy Sestaví image, nasdílí ji do služby ACR a aktualizuje odkaz na image webu. Nedotkne se infrastruktury. Slouží k odeslání změn aplikace do již zřízeného webu.
azd up Spustí v jednom příkazu azd provision a poté azd deploy. Použijte jej při prvním nasazení nebo když chcete provést zřízení a nasazení současně.

Protože azd deploy pouze aktualizuje odkaz na bitovou kopii, nasazení kontejneru appservice vždy závisí na infrastruktuře, kterou dříve vytvořil prvek azd provision nebo azd up.

Ověření připravenosti nasazení

Před aktualizací webu azd deploy ověří, zda je cílový web připraven pro kontejnery. Pokud web není aplikace typu kontejner pro Linux, například používá plán Windows, chybí DOCKER|linuxFxVersion hodnota nebo chybí přístup spravované identity k ACR, zastaví azd deploy se a vrátí chybu, která identifikuje chybějící konfiguraci. Před dalším nasazením opravte infrastrukturu a znovu ji zřiďte.

Kontejnery App Service v porovnání s Container Apps

Hostitelé appservice i containerapp nasazují kontejnerové image, ale infrastrukturu a konfiguraci spravují odlišně:

Chování appservice hostitel containerapp hostitel
Konfigurace infrastruktury azd deploy aktualizuje pouze odkaz na image a očekává, že lokalita už bude připravená pro kontejnery. Za vás zajišťuje větší část běhového prostředí kontejneru a jeho konfigurace.
Proměnné prostředí Nepoužije nastavení na úrovni env: služby. Místo toho nakonfigurujte nastavení aplikace prostřednictvím vaší infrastruktury. Použije pro kontejner nastavení na úrovni env: služby.
Podpora Polyglotu Kontejnerizuje aplikace v libovolném jazyce prostřednictvím language: docker, což je užitečné pro běhová prostředí bez integrované podpory azd. Kontejnerizuje aplikace v libovolném jazyce prostřednictvím language: docker, což je užitečné pro runtime prostředí bez integrované podpory azd.