Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você estiver executando um aplicativo Docker Compose no Serviço de Aplicativo do Azure, deverá migrá-lo para os sidecars. Há duas estratégias principais para migrar um aplicativo Docker Compose para os sidecars.
- Migração baseada em script – recomendada para configurações simples.
- Migração manual
Pré-requisitos
- PowerShell
- CLI do Azure
- Docker (para compilar e enviar imagens por push)
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 do aplicativo no 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 a ID da assinatura, o nome do aplicativo Web, o grupo de recursos, a URL do Registro, o arquivo Docker Compose codificado em base64, o nome do serviço principal e a porta de destino.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Se o registro exigir autenticação, o script solicitará que você forneça
dockerRegistryServerUsernameedockerRegistryServerPasswordinterativamente.
Migrar manualmente
Entre no Azure e defina sua assinatura.
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 a ID da assinatura, o nome do aplicativo, o grupo de recursos e o registro de contêiner do Azure.
Crie um slot de implantação. Você validará os sidecars migrados antes de alternar o slot para produção.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Decodificar a configuração do Docker Compose existente no 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>"))Quanto a cada serviço no seu arquivo Compose, crie um recurso
containercorrespondente no slot de implantação no caminho da 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 do Docker Compose e a Configuração do Sidecar para ajudá-lo com o mapeamento.
Use um nome de contêiner desejado em
<container-name>.Defina
isMainparatruedo contêiner do aplicativo principal,falsepara os 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 contêineres.
Alterne 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>Depois de validado, alterne o slot para produção:
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Mapeamento dos atributos do Docker Compose e da configuração do sidecar
Os seguintes campos do Docker Compose são mapeados para a configuração do sidecar:
| Docker Compose | Configuração do sidecar | Anotações |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Somente as portas 80 e 8080 têm suporte para tráfego externo. |
volumes |
volumeMounts |
Armazenamento persistente do Azure não é suportado. |
Os seguintes campos do Docker Compose não têm suporte em sidecars:
| Campo do Docker Compose | Apoio | Anotações |
|---|---|---|
build |
Não permitido | Pré-construir e enviar imagens para um registro. |
depends_on |
Ignorado | Nenhuma ordenação de inicialização de contêiner é garantida. |
networks |
Ignorado | O gerenciamento de rede é feito internamente. |
secrets |
Ignorado | Use as configurações de aplicativo do App Service ou o Key Vault para informações confidenciais. |
volumes usando {WEBAPP_STORAGE_HOME} ou {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
Sem suporte |
Limitações e considerações de migração
A tabela a seguir mostra os recursos atualmente compatíveis com os aplicativos do Docker Compose que não têm suporte ou têm suporte limitado nos 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 do host | Todos os contêineres compartilham localhost; portas exclusivas necessárias |
| Registro em log e Monitoramento | Drivers personalizados, ferramentas externas | Integrado ao Azure Monitor e ao Log Analytics |
| ASE (Ambiente do Serviço de Aplicativo) | Suportado | Ainda não há suporte |
| Nuvens nacionais | Suportado | Ainda não há suporte |