Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы запускаете приложение Docker Compose в Службе приложений Azure, его следует перенести на боковики. Существует две основные стратегии миграции приложения Docker Compose в сайдкары.
- Миграция на основе скриптов — рекомендуется для простых настроек.
- Ручная миграция
Предпосылки
- PowerShell
- Azure CLI (Интерфейс командной строки для Azure)
- Docker (для создания и отправки изображений)
Миграция с помощью скрипта
Если файл Docker Compose прост, можно использовать официальный скрипт миграции для автоматизации процесса.
Это важно
Перед запуском скрипта миграции всегда создайте резервную копию приложения на портале Azure.
Скачайте скрипт миграции из репозитория GitHub примеров Azure.
Запустите скрипт в PowerShell, указав идентификатор подписки, имя веб-приложения, группу ресурсов, URL-адрес реестра, файл Docker Compose в кодировке Base64, имя основной службы и целевой порт.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Если для реестра требуется проверка подлинности, скрипт попросит вас предоставить
dockerRegistryServerUsernameиdockerRegistryServerPasswordинтерактивно.
Миграция вручную
Войдите в Azure и настройте подписку.
az login az account set --subscription <your-subscription-id>Сбор необходимых сведений.
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Это поможет вам определить идентификатор подписки, имя приложения, группу ресурсов и реестр контейнеров Azure.
Создайте слот развертывания. Перед переключением слота в продакшн-среду вы проверите перенесенные сайдкары.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Декодирование существующей конфигурации Docker Compose из рабочего приложения.
az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersionСкопируйте часть base64 из выходных данных и декодируйте ее в PowerShell:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))Для каждой службы в файле Compose создайте соответствующий
containerресурс в слоте развертывания поsitecontainersURL-адресу: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>}}'Используйте сопоставление атрибутов Docker Compose и конфигурации сайдкара, чтобы помочь вам в сопоставлении.
Используйте нужное имя
<container-name>контейнера.Установите
isMainдля основного контейнера приложения иfalseдля сайдкаров.Для
<image-name>используйте полный путь к изображению, содержащий имя сервера. Рассмотрим пример."image":"myregistry.azurecr.io/myapp/backend:latest"Повторите для всех контейнеров.
Переключите слот развертывания, чтобы использовать режим sidecar.
az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"Перезапустите слот развертывания, а затем проверьте функциональность перенесенного приложения в слоте развертывания.
az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>После проверки переключите слот на рабочую среду:
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Сопоставление атрибутов Docker Compose и конфигурации сайдкара
Следующие поля Docker Compose сопоставляются с конфигурацией сайдкара.
| Docker Compose | Конфигурация сайдкара | Примечания. |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Для внешнего трафика поддерживаются только порты 80 и 8080. |
volumes |
volumeMounts |
Постоянное хранилище Azure не поддерживается. |
Следующие поля Docker Compose не поддерживаются в сайдкарах:
| Поле Docker Compose | Поддержка | Примечания. |
|---|---|---|
build |
Не разрешенный | Предварительная сборка и отправка образов в реестр. |
depends_on |
Проигнорировано | Порядок запуска контейнера не гарантируется. |
networks |
Проигнорировано | Администрирование сети осуществляется внутренним образом. |
secrets |
Проигнорировано | Используйте настройки службы App Service или Key Vault для секретов. |
volumes с использованием {WEBAPP_STORAGE_HOME} или {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
Не поддерживается |
Ограничения и рекомендации по миграции
В следующей таблице показаны функции, которые в настоящее время поддерживаются в приложениях Docker Compose, но не поддерживаются или имеют ограниченную поддержку в контейнерах sidecar.
| Функция | Docker Compose | Сайдкар |
|---|---|---|
| Хранение | Общие тома между контейнерами | Ограниченное постоянное хранилище для конкретного контейнера |
| Нетворкинг | Имена служб в качестве имен хостов | Все контейнеры используют localhost совместно; требуются уникальные порты. |
| Ведение журнала и мониторинг | Пользовательские драйверы, внешние инструменты | Интеграция с Azure Monitor и Log Analytics |
| Среда службы приложений (ASE). | Поддерживается | Пока не поддерживается |
| Национальные облака | Поддерживается | Пока не поддерживается |