Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Si vous exécutez une application Docker Compose dans Azure App Service, vous devez la migrer vers des sidecars. Il existe deux stratégies principales pour migrer une application Docker Compose vers des sidecars.
- Migration basée sur des scripts : recommandée pour les configurations simples.
- Migration manuelle
Conditions préalables
- PowerShell
- Azure CLI (Interface de ligne de commande Azure)
- Docker (pour la génération et l’envoi d’images)
Migrer avec un script
Si votre fichier Docker Compose est simple, vous pouvez utiliser le script de migration officiel pour automatiser le processus.
Important
Sauvegardez toujours votre application à partir du portail Azure avant d’exécuter le script de migration.
Téléchargez le script de migration à partir du dépôt GitHub d’exemples Azure.
Exécutez le script dans PowerShell, en fournissant votre ID d’abonnement, le nom de l’application web, le groupe de ressources, l’URL du Registre, le fichier Docker Compose codé en base64, le nom du service principal et le port cible.
./update-webapp.ps1 ` -subscriptionId "<subscriptionId>" ` -webAppName "<webAppName>" ` -resourceGroup "<resourceGroup>" ` -registryUrl "<registryUrl>" ` -base64DockerCompose "<base64DockerCompose>" ` -mainServiceName "<mainServiceName>" ` -targetPort "<targetPort>"Si votre registre nécessite une authentification, le script vous invite à fournir
dockerRegistryServerUsernameetdockerRegistryServerPasswordde manière interactive.
Migrer manuellement
Connectez-vous à Azure et définissez votre abonnement.
az login az account set --subscription <your-subscription-id>Rassemblez les détails requis.
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 tsvCelles-ci vous aideront à identifier votre ID d’abonnement, le nom de l’application, le groupe de ressources et le registre de conteneurs Azure.
Créez un emplacement de déploiement. Vous allez valider les sidecars migrés avant de basculer l’emplacement en production.
az webapp deployment slot create --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Décodez la configuration Docker Compose existante à partir de l’application de production.
az webapp config show --name <webapp-name> --resource-group <resource-group> --query linuxFxVersionCopiez la partie base64 à partir de la sortie et décodez-la dans PowerShell :
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("<base64value>"))Pour chaque service de votre fichier Compose, créez une ressource correspondante
containerdans l’emplacement de déploiement sous le chemin d’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>}}'Utilisez le mappage des attributs Docker Compose et de la configuration sidecar pour vous aider à effectuer le mappage.
Utilisez un nom de conteneur souhaité dans
<container-name>.Défini
isMainsurtruepour le conteneur d’application principal,falsepour les sidecars.Pour
<image-name>, utilisez le chemin d’accès complet de l’image qui inclut le nom du serveur. Par exemple:"image":"myregistry.azurecr.io/myapp/backend:latest"Répétez pour tous les conteneurs.
Basculez l’emplacement de déploiement pour utiliser le mode conteneur auxiliaire.
az webapp config set --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --linux-fx-version "sitecontainers"Redémarrez l’emplacement de déploiement, puis validez les fonctionnalités de l’application migrée dans l’emplacement de déploiement.
az webapp restart --name <webapp-name> --resource-group <resource-group> --slot <slot-name>Une fois validé, échangez l’emplacement en production :
az webapp deployment slot swap --name <webapp-name> --resource-group <resource-group> --slot <slot-name> --target-slot production
Mappage des attributs de Docker Compose et de la configuration du conteneur auxiliaire
Les champs Docker Compose suivants sont mappés à la configuration sidecar :
| Docker Compose | Configuration Sidecar | Remarques |
|---|---|---|
command, entrypoint |
startUpCommand |
|
environment |
environmentVariables |
|
image |
image |
|
ports |
targetPort |
Seuls les ports 80 et 8080 sont pris en charge pour le trafic externe. |
volumes |
volumeMounts |
Stockage Azure persistant non pris en charge. |
Les champs Docker Compose suivants ne sont pas pris en charge dans les sidecars :
| Champ Docker Compose | Soutien | Remarques |
|---|---|---|
build |
Non autorisé | Pré-génération et envoi (push) d’images vers un registre. |
depends_on |
Ignoré | Aucun ordre de démarrage de conteneur n’est garanti. |
networks |
Ignoré | La mise en réseau est gérée en interne. |
secrets |
Ignoré | Utilisez les paramètres d’application App Service ou Key Vault pour les secrets. |
volumes par {WEBAPP_STORAGE_HOME} ou {WEBSITES_ENABLE_APP_SERVICE_STORAGE} |
Non prise en charge |
Limitations et considérations relatives à la migration
Le tableau suivant présente les fonctionnalités actuellement prises en charge dans les applications Docker Compose qui ne sont pas prises en charge ou qui ont une prise en charge limitée dans les side-cars.
| Caractéristique | Docker Compose | Sidecar |
|---|---|---|
| Stockage | Volumes partagés entre conteneurs | Stockage persistant spécifique au conteneur limité |
| Réseautage | Noms de service en tant que noms d’hôte | Tous les conteneurs partagent localhost; ports uniques requis |
| Journalisation et surveillance | Pilotes personnalisés, outils externes | Intégré à Azure Monitor et Log Analytics |
| App Service Environment (ASE) | Soutenu | Pas encore pris en charge |
| Clouds nationaux | Soutenu | Pas encore pris en charge |