Migración (heredada) a la ramificación de la plataforma Docker que se ejecuta en Amazon Linux 2 desde Multicontainer Docker que se ejecuta en Amazon Linux - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migración (heredada) a la ramificación de la plataforma Docker que se ejecuta en Amazon Linux 2 desde Multicontainer Docker que se ejecuta en Amazon Linux

Antes del lanzamiento de la ramificación de la plataforma ECS que se ejecuta en Amazon Linux 2 de 64 bits, Elastic Beanstalk ofrecía una ruta de migración alternativa a Amazon Linux 2 para los clientes con entornos basados en la ramificación de la plataforma Multicontainer Docker que se ejecuta en Amazon Linux de 64 bits. En este tema se describe esa ruta de migración y se incluye en este documento como referencia para cualquier cliente que haya completado esa ruta de migración.

Ahora recomendamos que los clientes con entornos basados en la ramificación de la plataforma Multicontainer Docker que se ejecuta en Amazon Linux de 64 bits migren a la ramificación de la plataforma ECS que se ejecuta en Amazon Linux 2 de 64 bits. A diferencia de la ruta de migración alternativa, este enfoque continúa utilizando Amazon ECS para coordinar las implementaciones de los contenedores en entornos de Docker administrados por ECS. Este aspecto permite un enfoque más sencillo. No se requieren cambios en el código fuente y se admite el mismo Dockerrun.aws.json de la v2. Para obtener más información, consulte Migración de Docker multicontenedor sobre Amazon Linux a ECS sobre Amazon Linux 2023.

Puede migrar las aplicaciones que se ejecutan en la plataforma Docker de varios contenedores en la AMI de Amazon Linux a la plataforma Amazon Linux 2 Docker. La plataforma Docker Multi-Container en la AMI de Amazon Linux requiere que especifique imágenes de aplicación preconfiguradas para que se ejecuten como contenedores. Después de la migración, ya no tendrá esta limitación, ya que la plataforma de Docker en Amazon Linux 2 también permite a Elastic Beanstalk crear imágenes de contenedor durante la implementación. Sus aplicaciones seguirán ejecutándose en entornos de varios contenedores con los beneficios agregados de la herramienta Docker Compose.

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Para obtener más información sobre Docker Compose y cómo instalarlo, consulte los sitios de Docker Overview of Docker Compose e Install Docker Compose.

El archivo docker-compose.yml

La herramienta Docker Compose utiliza el archivo docker-compose.yml para la configuración de los servicios de aplicaciones. Este archivo reemplaza el archivo Dockerrun.aws.json v2 en el directorio del proyecto de la aplicación y el paquete de código fuente de la aplicación. Cree el archivo docker-compose.yml manualmente. Le resultará útil hacer referencia a su archivo Dockerrun.aws.json v2 para la mayoría de los valores de parámetros.

A continuación, se muestra un ejemplo de un archivo docker-compose.yml y el archivo Dockerrun.aws.json v2 correspondiente para la misma aplicación. Para obtener más información sobre el archivo docker-compose.yml, consulte Compose file reference. Para obtener más información sobre el archivo Dockerrun.aws.json v2, consulte 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" } ] } ] }

Consideraciones adicionales sobre la migración

La plataforma Docker Amazon Linux 2 y la plataforma Docker de contenedores múltiples Amazon Linux AMI implementan propiedades del entorno de forma diferente. Estas dos plataformas también tienen directorios de registro diferentes a los que Elastic Beanstalk crea para cada uno de sus contenedores. Después de migrar desde la plataforma Docker de contenedores múltiples de Amazon Linux AMI, deberá tener en cuenta estas diferentes implementaciones para su nuevo entorno de plataforma Docker de Amazon Linux 2.

Area Plataforma Docker en Amazon Linux 2 con Docker Compose Plataforma Docker de varios contenedores en la AMI de Amazon Linux

Propiedades del entorno

Para que los contenedores accedan a las propiedades del entorno, debe agregar una referencia al archivo .env en el archivo docker-compose.yml. Elastic Beanstalk genera el archivo .env, enumerando cada una de las propiedades como variables de entorno. Para obtener más información, consulte Referencia a variables de entorno en contenedores.

Elastic Beanstalk puede pasar directamente las propiedades del entorno al contenedor. El código que se ejecuta en el contenedor puede acceder a estas propiedades como variables de entorno sin ninguna configuración adicional.

Directorios de registro

Para cada contenedor, Elastic Beanstalk crea un directorio de registro llamado /var/log/eb-docker/containers/<service name> (o ${EB_LOG_BASE_DIR}/<service name>). Para obtener más información, consulte Registro personalizado del contenedor de Docker (Docker Compose).

Para cada contenedor, Elastic Beanstalk crea un directorio de registro llamado /var/log/containers/<containername>. Para obtener más información, consulte mountPoints en Formato de definición de contenedor.

Pasos para realizar la migración

Para migrar a la plataforma Docker de Amazon Linux 2
  1. Cree el archivo docker-compose.yml para su aplicación, basado en el archivo Dockerrun.aws.json v2 existente. Para obtener más información, consulte la sección anterior El archivo docker-compose.yml.

  2. En el directorio raíz de la carpeta del proyecto de la aplicación, reemplace el archivo Dockerrun.aws.json v2 por el archivo docker-compose.yml que acaba de crear.

    La estructura de directorios debe ser similar a la siguiente.

    ~/myApplication |-- docker-compose.yml |-- .ebextensions |-- php-app |-- proxy
  3. Utilice el comando eb init para configurar el directorio local para la implementación en Elastic Beanstalk.

    ~/myApplication$ eb init -p docker application-name
  4. Utilice el comando eb create para crear un entorno e implementar la imagen de Docker.

    ~/myApplication$ eb create environment-name
  5. Si la aplicación es una aplicación web, después de que se inicie el entorno, utilice el comando eb open para verla en un navegador web.

    ~/myApplication$ eb open environment-name
  6. Puede mostrar el estado del entorno recién creado mediante el comando eb status.

    ~/myApplication$ eb status environment-name