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.
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
linuxFxVersionnaDOCKER|<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. |