

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Migration vers Elastic Beanstalk Docker exécuté sur Amazon Linux 2 depuis un Docker multi-conteneurs exécuté sur Amazon Linux
<a name="docker-multicontainer-migration"></a>

Avant la sortie de la branche de plateforme *ECS s'exécutant sur Amazon Linux 2 64 bits*, Elastic Beanstalk a proposé un autre processus de migration vers Amazon Linux 2 pour les clients disposant d'environnements basés sur la branche de plateforme *Docker multiconteneurs s'exécutant sur Amazon Linux 64 bits*. Cette rubrique décrit ce processus de migration et reste dans ce document comme référence pour tous les clients ayant terminé ce processus de migration.

Nous recommandons désormais aux clients disposant d'environnements basés sur la branche de plateforme *Docker multiconteneurs s'exécutant sur Amazon Linux 64 bits* de migrer vers la branche de plateforme *ECS s'exécutant sur Amazon Linux 2 64 bits*. Contrairement au processus de migration alternatif, cette approche continue d'utiliser Amazon ECS pour coordonner les déploiements de conteneurs vers des environnements Docker gérés par ECS. Cet aspect permet une approche plus simple. Aucune modification du code source n'est requise, et le même `Dockerrun.aws.json` v2 est pris en charge. Pour de plus amples informations, veuillez consulter [Migration de votre application Elastic Beanstalk depuis AL1 Docker multi-conteneurs géré par ECS vers ECS sur Amazon Linux 2023](migrate-to-ec2-AL2-platform.md). 

## Migration héritée de Docker multiconteneurs sur Amazon Linux vers la branche de plateforme Docker Amazon Linux 2
<a name="docker-multicontainer-migration-to-docker-al2"></a>

Vous pouvez migrer vos applications qui s'exécutent sur la [plateforme Docker multiconteneurs sur l'AMI Amazon Linux](create_deploy_docker_ecs.md) vers la plateforme Docker Amazon Linux 2. La plateforme Docker multiconteneurs sur l'AMI Amazon Linux nécessite de spécifier des images d'application prédéfinies à exécuter en tant que conteneurs. Après la migration, cette limitation ne s'applique plus, car la plateforme Docker Amazon Linux 2 permet également à Elastic Beanstalk de créer vos images de conteneur pendant le déploiement. Vos applications continueront à s'exécuter dans des environnements multiconteneurs tout en profitant des avantages supplémentaires que procure l'outil Docker Compose.





Docker Compose est un outil qui permet de définir et d'exécuter des applications Docker multiconteneurs. Pour en savoir plus sur Docker Compose et savoir comment l'installer, veuillez consulter les sites Docker [Overview of Docker Compose](https://docs.docker.com/compose/) et [Install Docker Compose](https://docs.docker.com/compose/install/).

### le fichier `docker-compose.yml` ;
<a name="docker-multicontainer-migration.files"></a>

L'outil Docker Compose utilise le fichier `docker-compose.yml` pour la configuration de vos services d'application. Ce fichier remplace votre fichier `Dockerrun.aws.json v2` dans votre répertoire de projet d'application et dans le bundle de fichiers source de l'application. Vous créez le fichier `docker-compose.yml` manuellement et il s'avérera utile de référencer votre fichier `Dockerrun.aws.json v2` pour la plupart des valeurs de paramètre.

Voici un exemple de fichier `docker-compose.yml` et le fichier `Dockerrun.aws.json v2` correspondant pour la même application. Pour de plus amples informations sur le fichier `docker-compose.yml`, veuillez consulter [Compose file reference](https://docs.docker.com/compose/compose-file/). Pour de plus amples informations sur le fichier `Dockerrun.aws.json v2`, veuillez consulter [`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun). 


| **`docker-compose.yml`** | **`Dockerrun.aws.json v2`** | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  | 
|  <pre>version: '2.4'<br />services:<br />  php-app:<br />    image: "php:fpm"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app"<br />    mem_limit: 128m<br />    environment:<br />      Container: PHP<br />  nginx-proxy:<br />    image: "nginx"<br />    ports:<br />      - "80:80"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "./proxy/conf.d:/etc/nginx/conf.d:ro"<br />      - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"<br />    mem_limit: 128m<br />    links:<br />      - php-app</pre>  | 
|  <pre>{<br />  "AWSEBDockerrunVersion": 2,<br />  "volumes": [<br />    {<br />      "name": "php-app",<br />      "host": {<br />        "sourcePath": "/var/app/current/php-app"<br />      }<br />    },<br />    {<br />      "name": "nginx-proxy-conf",<br />      "host": {<br />        "sourcePath": "/var/app/current/proxy/conf.d"<br />      }<br />    }<br />  ],<br />  "containerDefinitions": [<br />    {<br />      "name": "php-app",<br />      "image": "php:fpm",<br />      "environment": [<br />        {<br />          "name": "Container",<br />          "value": "PHP"<br />        }<br />      ],<br />      "essential": true,<br />      "memory": 128,<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        }<br />      ]<br />    },<br />    {<br />      "name": "nginx-proxy",<br />      "image": "nginx",<br />      "essential": true,<br />      "memory": 128,<br />      "portMappings": [<br />        {<br />          "hostPort": 80,<br />          "containerPort": 80<br />        }<br />      ],<br />      "links": [<br />        "php-app"<br />      ],<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "nginx-proxy-conf",<br />          "containerPath": "/etc/nginx/conf.d",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "awseb-logs-nginx-proxy",<br />          "containerPath": "/var/log/nginx"<br />        }<br />      ]<br />    }<br />  ]<br />}<br /> </pre>  | 

### Considérations supplémentaires sur la migration
<a name="docker-multicontainer-migration.considerations"></a>

La plateforme Docker Amazon Linux 2 et la plateforme AMI multiconteneurs Amazon Linux implémentent les propriétés d'environnement différemment. Ces deux plateformes ont également des répertoires de journaux différents créés par Elastic Beanstalk pour chacun de leurs conteneurs. Après avoir effectué la migration à partir de la plateforme Docker multi-conteneur AMI Amazon Linux, vous devez être conscient de ces différentes implémentations pour votre nouvel environnement de plateforme Docker Amazon Linux 2.


|  **Area**  |  **Plateforme Docker sur Amazon Linux 2 avec Docker Compose**  |  **Plateforme Docker multiconteneurs sur l'AMI Amazon Linux**  | 
| --- | --- | --- | 
|  Propriétés de l'environnement  |  Pour que vos conteneurs puissent accéder aux propriétés de l'environnement, vous devez ajouter une référence au fichier `.env` dans le fichier `docker-compose.yml`. Elastic Beanstalk génère le fichier `.env`, répertoriant chaque propriété en tant que variable d'environnement. Pour plus d'informations, consultez [Référencement de variables d'environnement dans les conteneurs](create_deploy_docker.container.console.md#docker-env-cfg.env-variables).   |  Elastic Beanstalk peut transmettre directement les propriétés de l'environnement au conteneur. Votre code qui s'exécute dans le conteneur peut accéder à ces propriétés en tant que variables d'environnement sans configuration supplémentaire.   | 
|  Répertoires de journaux  |  Pour chaque conteneur, Elastic Beanstalk crée un répertoire de journal appelé `/var/log/eb-docker/containers/<service name>` (ou `${EB_LOG_BASE_DIR}/<service name>`). Pour plus d'informations, consultez [Journalisation personnalisée des conteneurs Docker avec Docker Compose](create_deploy_docker.container.console.md#docker-env-cfg.dc-customized-logging).   |  Pour chaque conteneur, Elastic Beanstalk crée un répertoire de journal appelé `/var/log/containers/<containername>`. Pour de plus amples informations, veuillez consulter le champ `mountPoints` dans [Format des définitions de conteneur](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format).   | 

### Etapes de la migration
<a name="docker-multicontainer-migration.procedure"></a>

**Pour migrer vers la plateforme Docker Amazon Linux 2**

1. Créez le fichier `docker-compose.yml ` de votre application, en fonction de son fichier `Dockerrun.aws.json v2` existant. Pour de plus amples informations, veuillez consulter la section ci-dessu [le fichier `docker-compose.yml` ;](#docker-multicontainer-migration.files).

1. Dans le répertoire racine de votre dossier de projet d'application, remplacez le fichier `Dockerrun.aws.json v2` par le fichier `docker-compose.yml` que vous venez de créer. 

   La structure de votre répertoire doit être la suivante.

   ```
   ~/myApplication
   |-- docker-compose.yml
   |-- .ebextensions
   |-- php-app
   |-- proxy
   ```

1. Utilisez la commande **eb init** pour configurer votre répertoire local pour le déploiement vers Elastic Beanstalk.

   ```
   ~/myApplication$ eb init -p docker application-name
   ```

1. Utilisez la commande **eb create** pour créer un environnement et déployer votre image Docker.

   ```
   ~/myApplication$ eb create environment-name
   ```

1. Si votre application est une application web, après le lancement de votre environnement, utilisez la commande **eb open** pour l'afficher dans un navigateur web.

   ```
   ~/myApplication$ eb open environment-name
   ```

1. Vous pouvez afficher l'état de votre environnement nouvellement créé à l'aide de la commande **eb status**.

   ```
   ~/myApplication$ eb status environment-name
   ```