App Service-tárolótelepítések Azure fejlesztői parancssori felülettel

Az Azure Developer CLI (azd) telepítheti az alkalmazását az Azure App Service-be. Ez az üzembe helyezési mód linuxos webalkalmazásként futtatja az alkalmazást tárolókhoz. Amikor egy szolgáltatás a host: appservice használja Docker-alapú buildhez, a azd deploy létrehozza a rendszerképet, feltölti azt az Azure Container Registrybe (ACR), és egy meglévő App Service-helyet az új rendszerképre állítja.

Mivel a azd deploy csak a tárolóképre mutató hivatkozást frissíti, üzembe helyezés előtt a webhelyet az infrastruktúrában konténeres üzemre alkalmassá kell tenni. Az üzembe helyezési mód elvárásának ismerete segít a hely helyes beállításában és a sikertelen üzembe helyezések elkerülésében.

Ez a cikk bemutatja, hogyan működik az az üzembe helyezési mód, mit kell már konfigurálni az infrastruktúrában, valamint miben különbözik a containerapp gazdagéptől. Feltételezi, hogy ismeri a azd projekteket, azure.yamlvalamint a azd kiépítési és üzembehelyezési parancsokat.

Hogyan helyez üzembe az azd egy tárolót az App Service-be

Ha egy szolgáltatás tárolókonfigurációval rendelkezik host: appservice , azd deploy a célwebhelyet webalkalmazásként kezeli tárolókhoz , és a következőket végzi el:

  • Tárolórendszerképet hoz létre a Dockerfile-ból.
  • Feltölti a rendszerképet az infrastruktúra által meghatározott ACR-példányba.
  • Frissíti a webhely linuxFxVersion beállítását erre: DOCKER|<image>, hogy a webhely az Ön lemezképét futtassa.

azd deploy csak egy meglévő webhely képhivatkozását frissíti. Nem hozza létre vagy konfigurálja a mögöttes infrastruktúrát, ezért a helynek már készen kell állnia a tárolóra az üzembe helyezés előtt.

Szolgáltatáskonfiguráció az azure.yaml-ben

Az App Service tárolótelepítése Docker-alapú buildet használ host: appservice . Állítson be language: dockervagy adjon hozzá egy olyan konfigurációt docker , amely a Dockerfile-ra mutat:

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

Ezzel a konfigurációval a azd a ./src/web/Dockerfile alapján hozza létre a rendszerképet, leküldi azt a regisztrációs adatbázisba, és frissíti az App Service-webhelyet, hogy az a rendszerképet futtassa. A appservice állomás nem érvényesíti a szolgáltatásszintű env: beállításokat, ezért az alkalmazásbeállításokat az infrastruktúrán keresztül adja meg.

Tárolóra kész App Service-webhely infrastruktúrakövetelményei

azd deploynem épít ki vagy módosít infrastruktúrát a appservice gazdagép számára, ezért a meglévő Bicep vagy Terraformnak linuxos tárolóalkalmazásként kell konfigurálnia a helyet az üzembe helyezés előtt. Az infrastruktúrának teljesítenie kell a következő szerződést:

Követelmény Részletek
Linux App Service-csomag A csomag Linuxot futtat (kind: linuxreserved: true használatával). Az App Service csak Linuxon támogatja a tárolókat, nem Windows.
Konténeres használatra kész webhely A webhely linuxFxVersionDOCKER\| értéket használ. A helyőrző kép megfelel, mert a(z) azd deploy lecseréli arra a képre, amelyet elkészít és feltölt.
Egyetlen tartály A webhely egy konténert futtat. A appservice gazdagép nem támogatja a többtárolós vagy a Docker Compose-konfigurációkat.
Felügyelt identitás ACR-hozzáférése A webhely egy felhasználó által hozzárendelt felügyelt identitás használatával hitelesíti magát az ACR felé, például acrUseManagedIdentityCreds: true és acrUserManagedIdentityID használatával. A appservice gazdagép nem támogatja a rendszergazdai hitelesítő adatokat.

azd deploy a provision és az up parancsokhoz képest

Az App Service-ben a tároló üzembe helyezése két szempontra terjed ki, az infrastruktúrára és az alkalmazáskódra, amelyek különböző azd parancsokra vannak megfeleltetve:

Parancs Mire szolgál? Mikor érdemes használni?
azd provision Létrehozza és konfigurálja az Azure-erőforrásokat az Ön Bicep- vagy Terraform-definíciói alapján, beleértve a konténerek futtatására kész App Service-helyet és az ACR-t. Akkor használja, ha megváltozik az infrastruktúra, vagy a webhely még nem létezik.
azd deploy Létrehozza a képet, leküldi az ACR-be, és frissíti a webhely képreferenciáját. Nem érinti az infrastruktúrát. Ezzel az alkalmazásmódosításokat egy már kiépített helyre szállíthatja.
azd up Futtatja a(z) azd provision parancsot, majd a(z) azd deploy parancsot egyetlen paranccsal. Használja első üzembe helyezéshez, vagy ha a kiépítést és az üzembe helyezést együtt szeretné elvégezni.

Mivel azd deploy csak a rendszerkép-referenciát frissíti, a appservice tároló üzembe helyezése mindig az előző azd provision vagy azd up létrehozott infrastruktúrától függ.

Üzembe helyezési készültség ellenőrzése

A webhely frissítése előtt a(z) azd deploy ellenőrzi, hogy a célwebhely alkalmas-e a konténeres használatra. Ha a webhely nem Linux-tárolóalkalmazás, például egy Windows-csomagot használ, hiányzik egy DOCKER|linuxFxVersion érték, vagy nincs felügyelt identitás hozzáférése az ACR-hez, akkor azd deploy leállítja és visszaad egy hibát, amely azonosítja a hiányzó konfigurációt. Javítsa ki az infrastruktúrát, és végezze el az újraüzembe helyezést, mielőtt újra telepít.

App Service-tárolók a Container Appshez képest

Mind a appservice hoszt, mind a containerapp hoszt konténerképeket telepít, de az infrastruktúrát és a konfigurációt eltérő módon kezeli:

Viselkedés appservice gazdagép containerapp gazdagép
Infrastruktúra-konfiguráció azd deploy csak a rendszerképhivatkozást frissíti, és feltételezi, hogy a webhely már elő van készítve a konténerek használatára. Az Ön számára kiépíti és konfigurálja a konténer-futtatókörnyezet nagyobb részét.
Környezeti változók Nem alkalmazza a szolgáltatásszintű env: beállításokat. Ehelyett konfigurálja az alkalmazásbeállításokat az infrastruktúrán keresztül. Szolgáltatásszintű env: beállításokat alkalmaz a tárolóra.
Polyglot-támogatás Lehetővé teszi a bármilyen nyelven írt alkalmazások language: docker használatával történő konténerbe helyezését, ami hasznos azon futtatókörnyezetek esetében, amelyek nem rendelkeznek beépített azd-támogatással. Az alkalmazásokat bármilyen nyelven language: docker segítségével konténerbe helyezi, ez különösen hasznos a beépített azd-támogatással nem rendelkező futtatókörnyezetek esetében.