Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli używasz aplikacji Docker Compose w usłudze Azure App Service, należy przeprowadzić migrację do przyczepek. Istnieją dwie główne strategie migracji aplikacji Docker Compose do przyczepek.
- Migracja oparta na skryptach — zalecana w przypadku prostych konfiguracji.
- Migracja ręczna
Wymagania wstępne
- PowerShell
- Azure CLI
- Docker (do kompilowania i wypychania obrazów)
Migrowanie za pomocą skryptu
Jeśli plik Docker Compose jest prosty, możesz użyć oficjalnego skryptu migracji, aby zautomatyzować proces.
Ważne
Przed uruchomieniem skryptu migracji zawsze należy utworzyć kopię zapasową aplikacji z witryny Azure Portal.
Pobierz skrypt migracyjny z repozytorium przykładowych skryptów Azure na GitHubie.
Uruchom skrypt w programie PowerShell, podając identyfikator subskrypcji, nazwę aplikacji internetowej, grupę zasobów, adres URL rejestru, plik Docker Compose zakodowany w formacie base64, nazwę głównej usługi i port docelowy.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Jeśli rejestr wymaga uwierzytelniania, skrypt wyświetli monit o podanie
dockerRegistryServerUsernameidockerRegistryServerPasswordinterakcyjnie.
Migruj ręcznie
Zaloguj się do Azure i ustaw swoją subskrypcję.
az login az account set --subscription <your-subscription-id>Zbierz wymagane szczegóły.
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 tsvUłatwi to zidentyfikowanie identyfikatora subskrypcji, nazwy aplikacji, grupy zasobów i rejestru kontenerów platformy Azure.
Utwórz gniazdo wdrożeniowe. Przed przełączeniem slotu do środowiska produkcyjnego zweryfikujesz zmigrowane sidecary.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Zdekoduj istniejącą konfigurację narzędzia Docker Compose z aplikacji produkcyjnej.
az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersionSkopiuj część base64 z danych wyjściowych i zdekoduj ją w programie PowerShell:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))Dla każdej usługi w pliku Compose utwórz odpowiedni
containerzasób w miejscu wdrożenia pod ścieżkąsitecontainersadresu URL: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>}}'Użyj mapowania atrybutów narzędzia Docker Compose i konfiguracji przyczepki , aby ułatwić mapowanie.
Użyj nazwy kontenera, której chcesz użyć w pliku
<container-name>.Ustaw
isMaindla głównego kontenera aplikacji,falsedla sidecars.Dla
<image-name>użyj pełnej ścieżki do obrazu zawierającej nazwę serwera. Przykład:"image":"myregistry.azurecr.io/myapp/backend:latest"Powtórz dla wszystkich kontenerów.
Przełącz slot wdrożeniowy, aby używać trybu sidecar.
az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"Uruchom ponownie miejsce wdrożenia, a następnie zweryfikuj funkcjonalność zmigrowanej aplikacji w miejscu wdrożenia.
az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Po zweryfikowaniu zamień miejsce na środowisko produkcyjne:
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Mapowanie atrybutów narzędzia Docker Compose i konfiguracji przyczepki
Następujące pola narzędzia Docker Compose są mapowane na konfigurację przyczepki:
| Docker Compose | Konfiguracja przyczepki | Notatki |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Tylko porty 80 i 8080 są obsługiwane dla ruchu zewnętrznego. |
volumes |
volumeMounts |
Trwała pamięć masowa platformy Azure nie jest obsługiwana. |
Następujące pola konfiguracji Docker Compose nie są obsługiwane w sidecarach:
| Pole redagowania platformy Docker | Wsparcie | Notatki |
|---|---|---|
build |
Niedozwolone | Wstępne kompilowanie i wypychanie obrazów do rejestru. |
depends_on |
Ignorowane | Nie ma gwarantowanej kolejności uruchamiania kontenera. |
networks |
Ignorowane | Sieć jest obsługiwana wewnętrznie. |
secrets |
Ignorowane | Używaj ustawień aplikacji App Service lub usługi Key Vault dla sekretów. |
volumes przy użyciu {WEBAPP_STORAGE_HOME} lub {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
Niewspierane |
Ograniczenia i zagadnienia dotyczące migracji
W poniższej tabeli przedstawiono funkcje obecnie obsługiwane w aplikacjach platformy Docker Compose, które nie są obsługiwane lub mają ograniczone wsparcie w kontenerach pomocniczych.
| Funkcja | Docker Compose | Wózek boczny |
|---|---|---|
| Magazyn | Woluminy współużytkowane między kontenerami | Trwała pamięć ograniczona dla konkretnego kontenera |
| Sieć | Nazwy usług jako nazwy hostów | Wszystkie kontenery są współużytkowane localhost, wymagane są unikatowe porty |
| Rejestrowanie i monitorowanie | Sterowniki niestandardowe, narzędzia zewnętrzne | Integracja z usługami Azure Monitor i Log Analytics |
| Środowisko App Service Environment (ASE) | Wsparte | Jeszcze nie jest obsługiwane |
| Chmury krajowe | Wsparte | Jeszcze nie jest obsługiwane |