(Hérité) Migration vers la branche de plateforme Amazon Linux 2 vers la branche de plateforme Docker multiconteneurs s'exécutant sur Amazon Linux - AWS Elastic Beanstalk

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.

(Hérité) Migration vers la branche de plateforme Amazon Linux 2 vers la branche de plateforme Docker multiconteneurs s'exécutant sur Amazon Linux

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 plus d'informations, consultez Migration de Docker multiconteneurs s'exécutant sur Amazon Linux vers ECS sur Amazon Linux 2023.

Vous pouvez migrer vos applications qui s'exécutent sur la plateforme Docker multiconteneurs sur l'AMI Amazon Linux 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 et Install Docker Compose.

le fichier docker-compose.yml ;

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. Pour de plus amples informations sur le fichier Dockerrun.aws.json v2, veuillez consulter Dockerrun.aws.json v2.

docker-compose.yml Dockerrun.aws.json v2
version: '2.4' services: php-app: image: "php:fpm" volumes: - "./php-app:/var/www/html:ro" - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app" mem_limit: 128m environment: Container: PHP nginx-proxy: image: "nginx" ports: - "80:80" volumes: - "./php-app:/var/www/html:ro" - "./proxy/conf.d:/etc/nginx/conf.d:ro" - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx" mem_limit: 128m links: - php-app
{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }

Considérations supplémentaires sur la migration

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.

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 du conteneur Docker (Docker Compose).

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.

Etapes de la migration

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 ;.

  2. 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
  3. 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
  4. Utilisez la commande eb create pour créer un environnement et déployer votre image Docker.

    ~/myApplication$ eb create environment-name
  5. 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
  6. Vous pouvez afficher l'état de votre environnement nouvellement créé à l'aide de la commande eb status.

    ~/myApplication$ eb status environment-name