Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se você estiver executando um aplicativo Docker Compose no Serviço de Aplicativo do Azure, deverá migrá-lo para sidecars. Há duas estratégias principais para migrar um aplicativo Docker Compose para sidecars.
- Migração baseada em script - recomendada para configurações simples.
- Migração manual
Pré-requisitos
- PowerShell
- Azure CLI (Interface de Linha de Comando da Azure)
- Docker (para criação e envio de imagens)
Migrar com um script
Se o arquivo Docker Compose for simples, você poderá usar o script de migração oficial para automatizar o processo.
Importante
Sempre faça backup de seu aplicativo do portal do Azure antes de executar o script de migração.
Baixe o script de migração do repositório GitHub de Exemplos do Azure.
Execute o script no PowerShell, fornecendo sua ID de assinatura, nome do aplicativo Web, grupo de recursos, URL do Registro, arquivo Docker Compose codificado em base64, nome do serviço principal e porta de destino.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Se o seu registro requer autenticação, o script solicita que você forneça
dockerRegistryServerUsernameedockerRegistryServerPasswordinterativamente.
Migrar manualmente
Inicie sessão no Azure e defina a sua subscrição.
az login az account set --subscription <your-subscription-id>Reúna os detalhes necessários.
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 tsvIsso ajudará você a identificar sua ID de assinatura, nome do aplicativo, grupo de recursos e registro de contêiner do Azure.
Crie um slot de implantação. Você validará os sidecars migrados antes de mudar o slot para a produção.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Decodifice a configuração existente do Docker Compose a partir do aplicativo de produção.
az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersionCopie a parte base64 da saída e decodifice-a no PowerShell:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))Para cada serviço no seu ficheiro Compose, crie um recurso correspondente
containerno slot de implantação sob o caminho de URLsitecontainers.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>}}'Use o mapeamento de atributos de composição do Docker e a configuração do sidecar para ajudá-lo com o mapeamento.
Use um nome de contêiner desejado no
<container-name>.Defina
isMaincomotruepara o contêiner principal do aplicativo,falsepara sidecars.Para
<image-name>, use o caminho completo para a imagem que inclui o nome do servidor. Por exemplo:"image":"myregistry.azurecr.io/myapp/backend:latest"Repita para todos os recipientes.
Mude o slot de implantação para usar o modo sidecar.
az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"Reinicie o slot de implantação e valide a funcionalidade do aplicativo migrado no slot de implantação.
az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Uma vez validado, troque o slot para produção:
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Mapeamento de atributos do Docker Compose e configuração de sidecar
Os seguintes campos Docker Compose são mapeados para a configuração do sidecar:
| Docker Compose | Configuração do sidecar | Observações |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Apenas as portas 80 e 8080 são suportadas para tráfego externo. |
volumes |
volumeMounts |
Armazenamento persistente do Azure não suportado. |
Os campos seguintes do Docker Compose não têm suporte em sidecars:
| Campo de composição do Docker | Apoio | Observações |
|---|---|---|
build |
Não permitido | Prepare antecipadamente e envie imagens para um registo. |
depends_on |
Ignorado | Nenhum pedido de inicialização de contêiner é garantido. |
networks |
Ignorado | A rede é gerida internamente. |
secrets |
Ignorado | Use as definições de aplicações do App Service ou o Azure Key Vault para segredos. |
volumes utilizando {WEBAPP_STORAGE_HOME} ou {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
Não suportado |
Limitações e considerações sobre migração
A tabela a seguir mostra os recursos atualmente suportados nas aplicações Docker Compose que não são suportados ou têm suporte limitado em sidecars.
| Característica | Docker Compose | Sidecar |
|---|---|---|
| Armazenamento | Volumes compartilhados entre contêineres | Armazenamento persistente específico do contêiner limitado |
| Rede | Nomes de serviço como nomes de host | Todos os contentores partilham localhost; são necessárias portas únicas |
| Registo e monitorização | Controladores personalizados, ferramentas externas | Integrado com o Azure Monitor e o Log Analytics |
| Ambiente de Serviço de Aplicações (ASE) | Suportado | Ainda não suportado |
| Nuvens Nacionais | Suportado | Ainda não suportado |