Migrace aplikací sestavených pomocí Docker Compose na komponenty typu sidecar ve službě Azure App Service

Pokud používáte aplikaci Docker Compose ve službě Azure App Service, měli byste ji migrovat na sidecary. Existují dvě hlavní strategie migrace Docker Compose aplikace na sidecars.

  • Migrace založená na skriptech – doporučeno pro jednoduchá nastavení.
  • Ruční migrace

Požadavky

  • PowerShell
  • Azure CLI (příkazový řádek nástroje Azure)
  • Docker (pro vytváření a odesílání imagí)

Migrace pomocí skriptu

Pokud je váš soubor Docker Compose jednoduchý, můžete tento proces automatizovat pomocí oficiálního skriptu migrace.

Důležité

Před spuštěním skriptu migrace vždy zálohujte aplikaci z webu Azure Portal.

  1. Stáhněte si skript pro migraci z úložiště GitHub ukázek Azure.

  2. Spusťte skript v PowerShellu a zadejte ID předplatného, název webové aplikace, skupinu prostředků, adresu URL registru, soubor Docker Compose s kódováním Base64, hlavní název služby a cílový port.

    ./update-webapp.ps1 `
      -subscriptionId "<subscriptionId>" `
      -webAppName "<webAppName>" `
      -resourceGroup "<resourceGroup>" `
      -registryUrl "<registryUrl>" `
      -base64DockerCompose "<base64DockerCompose>" `
      -mainServiceName "<mainServiceName>" `
      -targetPort "<targetPort>"
    

    Pokud váš registr vyžaduje ověření, skript vás vyzve k zadání dockerRegistryServerUsername a dockerRegistryServerPassword interaktivně.

Ruční migrace

  1. Přihlaste se k Azure a nastavte své předplatné.

    az login
    az account set --subscription <your-subscription-id>
    
  2. Shromážděte požadované podrobnosti.

    az account show --query id --output tsv
    az webapp list --query "[].{name:name}" --output tsv
    az group list --query "[].{name:name}" --output tsv
    az acr list --query "[].{name:name}" --output tsv
    

    Pomůže vám to identifikovat ID předplatného, název aplikace, skupinu prostředků a registr kontejnerů Azure.

  3. Vytvořte slot nasazení. Před přepnutím slotu do produkčního prostředí ověříte migrované sidecary.

    az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>
    
  4. Dekódujte existující konfiguraci Docker Compose z produkční aplikace.

    az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersion
    

    Zkopírujte část base64 z výstupu a dekódujte ji v PowerShellu:

    [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))
    
  5. Pro každou službu v souboru Compose vytvořte odpovídající container prostředek ve slotu nasazení pod cestou URL sitecontainers.

    az rest --method PUT \
      --url https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<webapp-name>/slots/<slot-name>/sitecontainers/<container-name>?api-version=2023-12-01 \
      --body '{"name":"<container-name>", "properties":{"image":"<image-name>", "isMain": <true/false>, "targetPort": <port>}}'
    
    • Použijte mapování atributů Docker Compose a konfigurační Sidecar, které vám pomůže s mapováním.

    • Použijte požadovaný název kontejneru .<container-name>

    • Nastavte isMain pro hlavní kontejner aplikace, false pro vedlejší kontejnery.

    • Pro <image-name> použijte úplnou cestu k obrázku, která obsahuje název serveru. Například:

      "image":"myregistry.azurecr.io/myapp/backend:latest"
      
    • Opakujte pro všechny kontejnery.

  6. Přepněte slot nasazení na režim sidecar.

    az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"
    
  7. Restartujte slot nasazení a ověřte funkčnost migrované aplikace v slotu nasazení.

    az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>
    
  8. Jakmile bude ověřeno, přepněte slot do produkčního prostředí.

    az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
    

Mapování atributů Docker Compose a konfigurace sidecaru

Následující pole Docker Compose jsou mapována na konfiguraci sidecaru:

Docker Compose Konfigurace vedlejšího modulu Poznámky
command, entrypoint startUpCommand
environment environmentVariables
image image
ports targetPort Externí provoz podporuje jenom porty 80 a 8080.
volumes volumeMounts Trvalé úložiště Azure se nepodporuje.

Následující pole Docker Compose nejsou podporována v pomocných kontejnerech:

Pole Docker Compose Podpora Poznámky
build Nepovoleno Předem sestavit a nahrát obrazy do registru
depends_on Ignorovaný Řazení spuštění kontejneru není zaručeno.
networks Ignorovaný Síťová komunikace je řešena interně.
secrets Ignorovaný Pro tajné kódy použijte nastavení aplikace služby App Service nebo Key Vault.
volumes pomocí {WEBAPP_STORAGE_HOME} nebo {WEBSITES_ENABLE_APP_SERVICE_STORAGE} Není podporováno

Omezení a aspekty migrace

Následující tabulka ukazuje funkce, které jsou aktuálně podporovány v aplikacích Docker Compose, ale nejsou podporovány nebo mají omezenou podporu ve sidecarech.

Vlastnost Docker Compose sajdkára
Storage Svazky sdílené mezi kontejnery Úložiště specifické pro kontejnery, trvalé a omezené
Sítě Názvy služeb jako názvy hostitelů Všechny kontejnery sdílejí localhost; jedinečné porty jsou požadovány.
Protokolování a monitorování Vlastní ovladače, externí nástroje Integrovaný se službou Azure Monitor a Log Analytics
App Service Environment (ASE) Podporováno Zatím není podporováno.
Národní cloudové služby Podporováno Zatím není podporováno.

Další zdroje informací