Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si ejecuta una aplicación de Docker Compose en Azure App Service, debe migrarla a contenedores sidecar. Hay dos estrategias principales para migrar una aplicación de Docker Compose a contenedores sidecar.
- Migración basada en scripts: se recomienda para configuraciones sencillas.
- Migración manual
Prerrequisitos
- PowerShell
- CLI de Azure
- Docker (para compilar e insertar imágenes)
Migración con un script
Si el archivo de Docker Compose es sencillo, puede usar el script de migración oficial para automatizar el proceso.
Importante
Realice siempre una copia de seguridad de la aplicación desde Azure Portal antes de ejecutar el script de migración.
Descargue el script de migración desde el repositorio de GitHub de ejemplos de Azure.
Ejecute el script en PowerShell, proporcionando el identificador de suscripción, el nombre de la aplicación web, el grupo de recursos, la dirección URL del Registro, el archivo Docker Compose codificado en base64, el nombre del servicio principal y el puerto de destino.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Si el registro requiere autenticación, el script le pedirá que proporcione
dockerRegistryServerUsernameedockerRegistryServerPasswordinteractivamente.
Migración manual
Inicie sesión en Azure y configure la suscripción.
az login az account set --subscription <your-subscription-id>Recopile los detalles necesarios.
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 tsvEsto le ayudará a identificar el identificador de suscripción, el nombre de la aplicación, el grupo de recursos y el registro de contenedor de Azure.
Crea una ranura de implementación. Tiene que validar los contenedores sidecar migrados antes de cambiar la ranura a producción.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Descodifique la configuración existente de Docker Compose desde la aplicación de producción.
az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersionCopie la parte base64 de la salida y descodídela en PowerShell:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))Para cada servicio del archivo Compose, cree un recurso
containercorrespondiente en la ranura de implementación en la ruta de acceso de la dirección 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>}}'Utilice la asignación de atributos de Docker Compose y la configuración de contenedores sidecar para ayudarle con la asignación.
Use un nombre de contenedor que desee en
<container-name>.Establezca
isMainentruepara el contenedor de la aplicación principal y enfalsepara los contenedores sidecar.Para
<image-name>, utilice la ruta de acceso completa para la imagen que incluye el nombre del servidor. Por ejemplo:"image":"myregistry.azurecr.io/myapp/backend:latest"Repita la operación para todos los contenedores.
Cambie la ranura de implementación para usar el modo sidecar.
az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"Reinicie la ranura de implementación y, a continuación, valide la funcionalidad de la aplicación migrada en la ranura de implementación.
az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Una vez validado, cambie el slot al entorno de producción.
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Asignación de atributos de Docker Compose y configuración de contenedores sidecar
Los siguientes campos de Docker Compose se asignan a la configuración de contenedores sidecar:
| Docker Compose | Configuración de contenedores sidecar | Notas |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Solo se admiten los puertos 80 y 8080 para el tráfico externo. |
volumes |
volumeMounts |
No se admite el almacenamiento persistente de Azure. |
Los siguientes campos de Docker Compose no se admiten en contenedores sidecar:
| Campo de Docker Compose | Apoyo | Notas |
|---|---|---|
build |
No permitida | Compile e inserte imágenes previamente en un registro. |
depends_on |
Omitido | No se garantiza ningún pedido de inicio del contenedor. |
networks |
Omitido | Las redes se controlan internamente. |
secrets |
Omitido | Utiliza la configuración de la aplicación de App Service o Key Vault para gestionar secretos. |
volumes usar {WEBAPP_STORAGE_HOME} o {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
No está soportado |
Consideraciones y limitaciones de la migración
En la tabla siguiente se muestran las características admitidas actualmente en las aplicaciones de Docker Compose que no se admiten o que tienen compatibilidad limitada en sidecars.
| Característica | Docker Compose | Sidecar |
|---|---|---|
| Almacenamiento | Volúmenes compartidos entre contenedores | Almacenamiento limitado, persistente y específico del contenedor |
| Redes | Nombres de servicios como nombres de host | Todos los contenedores comparten localhost; puertos únicos necesarios |
| Registro y supervisión | Controladores personalizados, herramientas externas | Integrado con Azure Monitor y Log Analytics |
| App Service Environment (ASE) | Compatible | Todavía no se admite |
| Nubes nacionales | Compatible | Todavía no se admite |