Compartilhar via


Migrar aplicativos do Docker Compose para sidecars no Serviço de Aplicativo do Azure

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.

  1. Baixe o script de migração do repositório GitHub de Exemplos do Azure.

  2. 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 dockerRegistryServerUsername e dockerRegistryServerPassword interativamente.

Migrar manualmente

  1. Entre no Azure e defina sua assinatura.

    az login
    az account set --subscription <your-subscription-id>
    
  2. 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 tsv
    

    Isso ajudará você a identificar a ID da assinatura, o nome do aplicativo, o grupo de recursos e o registro de contêiner do Azure.

  3. 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>
    
  4. 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 linuxFxVersion
    

    Copie a parte base64 da saída e decodifice-a no PowerShell:

    [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))
    
  5. Quanto a cada serviço no seu arquivo Compose, crie um recurso container correspondente no slot de implantação no caminho da 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>}}'
    
    • 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 isMain para true do contêiner do aplicativo principal, false para 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.

  6. 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"
    
  7. 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>
    
  8. 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

Mais recursos