Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Developer CLI (azd) kann Ihre App für Azure App Service bereitstellen. Dieser Bereitstellungsmodus führt Ihre App als Linux Web App für Container aus. Wenn ein Dienst host: appservice mit einem Docker-basierten Build verwendet, erstellt azd deploy das Image, überträgt es in die Azure Container Registry (ACR) und verweist eine vorhandene App Service-Website auf das neue Image.
Da azd deploy nur die Image-Referenz aktualisiert, muss Ihre Infrastruktur die Website containerfähig machen, bevor Sie sie bereitstellen. Wenn Sie wissen, was dieser Bereitstellungsmodus erwartet, können Sie die Website ordnungsgemäß einrichten und fehlerhafte Bereitstellungen vermeiden.
In diesem Artikel wird erläutert, wie dieser Bereitstellungsmodus funktioniert, was Ihre Infrastruktur bereits konfigurieren muss und wie sie sich vom containerapp Host unterscheidet. Es wird davon ausgegangen, dass Sie mit den azure.yaml Projekten, azd und den azd Bereitstellungs- und Veröffentlichungsbefehlen vertraut sind.
So stellt azd einen Container für App Service bereit
Wenn ein Dienst host: appservice mit einer Containerkonfiguration festlegt, behandelt azd deploy die Zielwebsite als Web App für Container und führt die folgenden Schritte aus:
- Erstellt ein Containerimage aus Ihrer Dockerfile-Datei.
- Überträgt das Image in die ACR-Instanz, die von Ihrer Infrastruktur definiert wird.
- Aktualisiert die Einstellung der Website
linuxFxVersionaufDOCKER|<image>, sodass die Website mit Ihrem Image ausgeführt wird.
azd deploy aktualisiert nur den Bildverweis für eine vorhandene Website. Sie erstellt oder konfiguriert die zugrunde liegende Infrastruktur nicht, daher muss der Standort bereits containerbereit sein, bevor Sie die Bereitstellung ausführen.
Dienstkonfiguration in azure.yaml
Eine Containerbereitstellung für App Service verwendet host: appservice für einen Docker-basierten Build. Legen Sie language: docker fest oder fügen Sie eine docker-Konfiguration hinzu, die auf Ihr Dockerfile verweist:
services:
web:
project: ./src/web
host: appservice
language: docker
docker:
path: ./Dockerfile
Mit dieser Konfiguration erstellt ./src/web/Dockerfile das Image aus azd, pusht es in Ihre Containerregistrierung und aktualisiert die App Service-Web-App, damit sie das Image ausführt. Der appservice Host wendet keine Einstellungen auf Dienstebene env: an. Konfigurieren Sie daher app-Einstellungen stattdessen über Ihre Infrastruktur.
Infrastrukturanforderungen für eine App Service-Website mit Containerunterstützung
azd deploystellt keine Infrastruktur für den Host bereit oder ändert sie, sodass Ihre vorhandenen Bicep oder Terraform die Website vor der appservice Bereitstellung als Linux-Container-App konfigurieren müssen. Die Infrastruktur muss den folgenden Vertrag erfüllen:
| Anforderung | Einzelheiten |
|---|---|
| Linux App Service-Plan | Der Plan läuft unter Linux (kind: linux mit reserved: true). Der App-Dienst unterstützt Container nur unter Linux, nicht Windows. |
| Containerfähige Website | Das linuxFxVersion der Website verwendet den Wert DOCKER\|. Ein Platzhalterbild ist in Ordnung, da azd deploy es durch das Bild ersetzt, das es erstellt und pusht. |
| Einzelner Container | Die Website betreibt einen Container. Der appservice Host unterstützt keine Konfigurationen für Multicontainer oder Docker Compose. |
| Verwalteter Identitäts-ACR-Zugriff | Die Website authentifiziert sich gegenüber ACR über eine benutzerseitig zugewiesene verwaltete Identität, z. B. acrUseManagedIdentityCreds: true mit acrUserManagedIdentityID. Der appservice Host unterstützt keine Administratoranmeldeinformationen. |
azd deploy im Vergleich zu provision und up
Die Containerbereitstellung für App Service umfasst zwei Aspekte: Infrastruktur und Anwendungscode, die verschiedenen azd Befehlen zugeordnet sind:
| Command | Was es bewirkt | Wann wird es verwendet? |
|---|---|---|
azd provision |
Erstellt und konfiguriert Azure-Ressourcen auf Basis Ihrer Bicep- oder Terraform-Konfiguration, einschließlich der containerfähigen App Service-Instanz und ACR. | Verwenden Sie sie, wenn sich Ihre Infrastruktur ändert oder die Website noch nicht vorhanden ist. |
azd deploy |
Erstellt das Image, lädt es in ACR hoch und aktualisiert den Imageverweis der Website. Die Infrastruktur wird nicht berührt. | Verwenden Sie sie, um Anwendungsänderungen an eine bereits bereitgestellte Website zu senden. |
azd up |
Führt azd provision und dann azd deploy mit einem einzigen Befehl aus. |
Verwenden Sie es für eine erstmalige Bereitstellung oder wenn Sie Provisionierung und Bereitstellung zusammen durchführen möchten. |
Da azd deploy nur die Image-Referenz aktualisiert, hängt eine Containerbereitstellung mit appservice immer von einer Infrastruktur ab, die zuvor durch azd provision oder azd up erstellt wurde.
Überprüfung der Bereitstellungsbereitschaft
Bevor die Website aktualisiert wird, überprüft azd deploy, ob die Zielwebsite containerfähig ist. Wenn es sich bei der Website nicht um eine Linux-Container-App handelt, z. B. ein Windows Plan verwendet wird, ein DOCKER|linuxFxVersion Wert fehlt oder kein verwalteter Identitätszugriff auf ACR vorhanden ist, azd deploy stoppt und gibt einen Fehler zurück, der die fehlende Konfiguration identifiziert. Korrigieren Sie die Infrastruktur und stellen Sie sie neu bereit, bevor Sie erneut bereitstellen.
App-Dienstcontainer im Vergleich zu Container-Apps
Sowohl der appservice- als auch der containerapp-Host stellen Container-Images bereit, verwalten jedoch Infrastruktur und Konfiguration unterschiedlich:
| Behavior |
appservice Host |
containerapp Host |
|---|---|---|
| Infrastrukturkonfiguration |
azd deploy aktualisiert nur den Imageverweis und erwartet, dass die Website bereits containerbereit ist. |
Stellt weitere Containerlaufzeiten für Sie fest und konfiguriert sie. |
| Umgebungsvariablen | Wendet keine Einstellungen auf Dienstebene env: an. Konfigurieren Sie stattdessen App-Einstellungen über Ihre Infrastruktur. |
Wendet Einstellungen auf Dienstebene env: auf den Container an. |
| Polyglot-Unterstützung | Ermöglicht die Containerisierung von Apps in jeder Sprache mithilfe von language: docker, was für Laufzeitumgebungen ohne integrierte azd-Unterstützung nützlich ist. |
Containerisiert Apps in jeder Sprache mithilfe von language: docker, was für Laufzeiten ohne integrierte azd-Unterstützung nützlich ist. |