Implementación de aplicaciones de Elastic Beanstalk desde contenedores Docker - AWS Elastic Beanstalk

Implementación de aplicaciones de Elastic Beanstalk desde contenedores Docker

Elastic Beanstalk permite implementar aplicaciones web desde contenedores de Docker. Con los contenedores de Docker, puede definir su propio entorno de ejecución. También puede elegir su propia plataforma, lenguaje de programación y las dependencias de la aplicación (por ejemplo, herramientas o administradores de paquetes), que normalmente no son compatibles con otras plataformas. Los contenedores de Docker son autónomos y contienen todo el software y la información de configuración que la aplicación web necesita para ejecutarse. Todas las variables de entorno definidas en la consola de Elastic Beanstalk se transfieren a los contenedores.

Si usa Docker con Elastic Beanstalk, tendrá una infraestructura que administrará todos los detalles de aprovisionamiento de la capacidad, el balanceo de carga, el escalado y la supervisión del estado de las aplicaciones. Puede administrar fácilmente su aplicación web en un entorno que admita el conjunto de servicios integrados con Elastic Beanstalk. Estos entornos incluyen, entre otros, VPC, RDS e IAM. Para obtener más información sobre Docker, incluido cómo instalarlo, el software que requiere y cómo usar imágenes de Docker para lanzar contenedores de Docker, consulte Docker: the Linux container engine.

En los temas de este capítulo se supone que tiene algunos conocimientos de los entornos de Elastic Beanstalk. Si no ha usado Elastic Beanstalk antes, pruebe el tutorial de introducción para conocer los conceptos básicos.

Familia de plataformas Docker

La familia de plataformas Docker para Elastic Beanstalk incluye varias plataformas. La plataforma de Docker que se ejecuta en Amazon Linux 2 ofrece la mayoría de los beneficios, como el soporte a largo plazo. En las secciones siguientes se indican las plataformas de Docker que ofrece Elastic Beanstalk y las rutas de migración a Amazon Linux 2 recomendadas.

Para obtener más información acerca de las versiones de plataforma compatibles para cada plataforma de Docker, consulte la página Plataformas admitidas en el documento Plataformas de AWS Elastic Beanstalk.

La plataforma Docker

Elastic Beanstalk puede implementar una imagen de Docker y código fuente en instancias EC2 que ejecutan la plataforma de Docker en Elastic Beanstalk. La plataforma es compatible con varios contenedores (y con un solo contenedor). También puede utilizar la herramienta Docker Compose en la plataforma de Docker para simplificar la configuración, las pruebas y la implementación de las aplicaciones.

Esta plataforma Docker de Amazon Linux 2 ofrece las siguientes ventajas:

  • Soporte a largo plazo. La plataforma de Docker en Amazon Linux 2 cuenta con soporte a largo plazo y, por tanto, recibe actualizaciones de seguridad y características.

  • Características de Docker Compose. Esta plataforma le permitirá aprovechar las características proporcionadas por la herramienta Docker Compose para definir y ejecutar varios contenedores. Puede incluir el archivo docker-compose.yml para implementarlo en Elastic Beanstalk.

  • Uso de imágenes de aplicaciones de repositorios públicos o privados. Elastic Beanstalk invoca la interfaz de línea de comandos de Docker Compose, procesando el archivo docker-compose.yml para extraer las imágenes de la aplicación y ejecutarlas como aplicaciones en contenedores.

  • Cree las imágenes de contenedor durante la implementación. No es necesario crear previamente las imágenes de la aplicación antes de implementarlas para ejecutarlas como contenedores. Durante la implementación, puede crear las imágenes de contenedor desde cero especificando dependencias en Dockerfile.

Para obtener más información, ejemplos y ayuda para empezar a trabajar con un entorno de Docker, consulte Uso de la plataforma Docker. Para obtener información detallada sobre los formatos de definición de contenedor y su uso, consulte Configuración de Docker.

Las siguientes secciones son relevantes para los entornos de Docker en Elastic Beanstalk que utilizan la versión anterior de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2).

La plataforma de Docker basada en la AMI de Amazon Linux puede utilizarse para implementar una imagen de Docker (descrita en un Dockerfile o en una definición Dockerrun.aws.json) y el código fuente en instancias EC2 que se ejecutan en un entorno de Elastic Beanstalk. Esta plataforma de Docker ejecuta solo un contenedor para cada instancia.

Para obtener ejemplos y ayuda para empezar a trabajar con un entorno de Docker, consulte Uso de la plataforma Docker. Para obtener más información acerca de los formatos de definición de contenedor y su uso, consulte Configuración de Docker.

nota

Esta plataforma solo admite el sistema operativo AMI de Amazon Linux (la versión que precede a Amazon Linux 2). La plataforma de Docker proporciona la funcionalidad Multicontainer Docker con Amazon Linux 2.

La otra plataforma genérica, Multicontainer Docker, utiliza Amazon Elastic Container Service (Amazon ECS) para coordinar una implementación de varios contenedores Docker en un clúster de Amazon ECS en un entorno de Elastic Beanstalk. Todas las instancias del entorno ejecutan el mismo conjunto de contenedores, que está definido en un archivo Dockerrun.aws.json. Si su entorno Elastic Beanstalk utiliza una versión de la plataforma AMI de Amazon Linux (precede a Amazon Linux 2), utilice la plataforma multicontenedor para implementar varios contenedores Docker en cada instancia.

Para obtener más información acerca de la plataforma Docker Multicontainer y su uso, consulte Uso de la plataforma Multicontainer Docker (AMI de Amazon Linux). Los detalles del tema Configuración de Docker multicontenedor versión 2 del formato Dockerrun.aws.json, que es similar, aunque no compatible, a la versión que se utiliza con la plataforma de Docker. También hay un tutorial que le servirá de guía para implementar un entorno multicontenedor desde cero. El entorno que se describe ejecuta un sitio web PHP con un proxy NGINX ejecutándose delante de él en un contenedor distinto.

Además de las dos plataformas genéricas de Docker, existen varias ramificaciones preconfiguradas de la plataforma de Docker que puede utilizar para ejecutar la aplicación en una de varias pilas de software comunes, como Java con GlassFish o Python con uWSGI. Utilice un contenedor preconfigurado si se ajusta al software que utiliza su aplicación.

nota

Todas las ramificaciones de la plataforma de Docker preconfigurada utilizan el sistema operativo de la AMI de Amazon Linux (la versión que precede a Amazon Linux 2). Para migrar su aplicación de GlassFish a Amazon Linux 2, use la plataforma de Docker genérica e implemente GlassFish y su código de aplicación en una imagen de Docker de Amazon Linux 2. Para obtener más información acerca de este tema, consulte Implementación de una aplicación GlassFish en la plataforma de Docker: una ruta de migración a Amazon Linux 2.

Para obtener más información, consulte Contenedores de Docker preconfigurados .