Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure Developer CLI (azd) umożliwia wdrożenie aplikacji do usługi Azure App Service. Ten tryb wdrażania uruchamia aplikację jako aplikację internetową systemu Linux dla kontenerów. Gdy usługa korzysta z host: appservice z kompilacją opartą na Dockerze, azd deploy kompiluje obraz, przesyła go do usługi Azure Container Registry (ACR) i ustawia istniejącą witrynę usługi App Service tak, aby używała nowego obrazu.
Ponieważ azd deploy aktualizuje tylko odwołanie do obrazu kontenera, przed wdrożeniem infrastruktura musi przygotować witrynę do uruchomienia w kontenerze. Wiedza o tym, czego wymaga ten tryb wdrażania, pomaga poprawnie skonfigurować witrynę i uniknąć nieudanych wdrożeń.
W tym artykule wyjaśniono, jak działa ten tryb wdrażania, co musi być już skonfigurowane w infrastrukturze i czym różni się od hosta containerapp. Zakłada się, że znasz projekty azd, azure.yaml oraz polecenia azd dotyczące aprowizacji i wdrażania.
Jak azd wdraża kontener w usłudze App Service
Gdy usługa ustawia konfigurację host: appservice kontenera, azd deploy traktuje witrynę docelową jako aplikację internetową dla kontenerów i wykonuje następujące czynności:
- Tworzy obraz kontenera z pliku Dockerfile.
- Wysyła obraz do instancji ACR zdefiniowanej w infrastrukturze.
- Aktualizuje ustawienie witryny
linuxFxVersionnaDOCKER|<image>, aby witryna uruchamiała Twój obraz.
azd deploy aktualizuje tylko odwołanie do obrazu dla istniejącej witryny. Nie tworzy ani nie konfiguruje infrastruktury bazowej, dlatego przed wdrożeniem witryna musi być już przystosowana do konteneryzacji.
Konfiguracja usługi w pliku azure.yaml
Wdrożenie kontenera do usługi App Service używa host: appservice z kompilacją opartą na Dockerze. Ustaw language: docker lub dodaj konfigurację docker, która wskazuje na plik Dockerfile:
services:
web:
project: ./src/web
host: appservice
language: docker
docker:
path: ./Dockerfile
Dzięki tej konfiguracji azd kompiluje obraz na podstawie pliku ./src/web/Dockerfile, wypycha go do rejestru i aktualizuje witrynę w usłudze App Service, aby uruchamiała ten obraz. Host appservice nie stosuje ustawień na poziomie env: usługi, dlatego zamiast tego skonfiguruj ustawienia aplikacji za pośrednictwem infrastruktury.
Wymagania dotyczące infrastruktury dla witryny usługi App Service gotowej do użycia w kontenerze
azd deploy nie aprowizuje ani nie modyfikuje infrastruktury dla hosta appservice, więc istniejąca konfiguracja w Bicep lub Terraform musi skonfigurować witrynę jako aplikację kontenerową systemu Linux przed wdrożeniem. Infrastruktura musi spełniać następujący kontrakt:
| Requirement | Details |
|---|---|
| Plan usługi App Service dla systemu Linux | Plan działa w systemie Linux (kind: linux z reserved: true). Usługa App Service obsługuje tylko kontenery w systemie Linux, a nie Windows. |
| Witryna gotowa do użycia w kontenerze |
linuxFxVersion witryny ma wartość DOCKER\|. Obraz zastępczy jest w porządku, ponieważ azd deploy zastępuje go obrazem, który kompiluje i wypycha. |
| Pojedynczy kontener | Witryna działa w jednym kontenerze.
appservice Host nie obsługuje konfiguracji wielokontenerowych ani docker Compose. |
| Dostęp do usługi ACR tożsamości zarządzanej | Witryna uwierzytelnia się w usłudze ACR za pomocą tożsamości zarządzanej przypisanej przez użytkownika, takiej jak acrUseManagedIdentityCreds: true .acrUserManagedIdentityID
appservice Host nie obsługuje poświadczeń administratora. |
azd deploy w porównaniu z provision i up
Wdrożenie kontenera w usłudze App Service obejmuje dwa obszary: infrastrukturę i kod aplikacji, które odpowiadają różnym poleceniom azd:
| Command | Do czego służy | Kiedy należy go używać |
|---|---|---|
azd provision |
Tworzy i konfiguruje zasoby Azure na podstawie plików Bicep lub Terraform, w tym witrynę App Service przystosowaną do kontenerów oraz ACR. | Użyj go, gdy infrastruktura ulegnie zmianie lub lokacja jeszcze nie istnieje. |
azd deploy |
Tworzy obraz, wypycha go do usługi ACR i aktualizuje odwołanie do obrazu witryny. Nie dotyka infrastruktury. | Służy do dostarczania zmian aplikacji do już aprowizowanej witryny. |
azd up |
Uruchamia azd provision, a następnie azd deploy za pomocą jednego polecenia. |
Użyj tej opcji przy pierwszym wdrożeniu lub gdy chcesz jednocześnie przygotować zasoby i przeprowadzić wdrożenie. |
Ponieważ azd deploy tylko aktualizuje odniesienie do obrazu, wdrożenie kontenera appservice zawsze zależy od infrastruktury utworzonej wcześniej przez azd provision lub azd up.
Walidacja gotowości wdrożenia
Przed zaktualizowaniem witryny azd deploy sprawdza, czy witryna docelowa jest gotowa do pracy w kontenerze. Jeśli witryna nie jest na przykład aplikacją kontenerową systemu Linux, używa planu Windows, brakuje wartości DOCKER|linuxFxVersion lub tożsamość zarządzana nie ma dostępu do usługi ACR, wówczas azd deploy zatrzymuje się i zwraca błąd wskazujący brakującą konfigurację. Popraw infrastrukturę i skonfiguruj ją ponownie, zanim wdrożysz ją ponownie.
Kontenery usługi App Service w porównaniu z usługą Container Apps
Zarówno host appservice, jak i host containerapp, wdrażają obrazy kontenerów, ale inaczej zarządzają infrastrukturą i konfiguracją:
| Behavior |
appservice host |
containerapp host |
|---|---|---|
| Konfiguracja infrastruktury |
azd deploy aktualizuje tylko odwołanie do obrazu i oczekuje, że witryna będzie już gotowa do użycia w kontenerze. |
Udostępnia i konfiguruje za Ciebie większą część środowiska uruchomieniowego kontenera. |
| Zmienne środowiskowe | Nie stosuje ustawień na poziomie env: usługi. Zamiast tego skonfiguruj ustawienia aplikacji za pomocą infrastruktury. |
Stosuje ustawienia na poziomie env: usługi do kontenera. |
| Obsługa wielu języków | Konteneryzuje aplikacje napisane w dowolnym języku za pomocą language: docker, co jest przydatne w przypadku środowisk uruchomieniowych bez wbudowanej obsługi azd. |
Umożliwia konteneryzację aplikacji napisanych w dowolnym języku za pomocą language: docker, co jest przydatne dla środowisk uruchomieniowych bez wbudowanej obsługi azd. |