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.
Configuración de entornos Docker de Elastic Beanstalk
En este capítulo se explica la información de configuración adicional para todas las ramas de la plataforma Docker compatibles, incluida la rama de la plataforma Docker ECS administrada. A menos que se identifique una rama de plataforma o un componente de rama de plataforma específicos en una sección, se aplica a todos los entornos que ejecutan plataformas Docker compatibles y Docker ECS administradas.
nota
Si su entorno de Elastic Beanstalk utiliza una versión de la plataforma Docker de AMI Amazon Linux (anterior a Amazon Linux 2), asegúrese de leer la información adicional en. Configuración de Docker en Amazon Linux AMI (anterior a Amazon Linux 2)
Secciones
- Configuración de software en entornos de Docker
- Referencia a variables de entorno en contenedores
- Uso de la característica de interpolación para variables de entorno con Docker Compose
- Creación de registros para informes de estado avanzados con Docker Compose
- Registro personalizado del contenedor de Docker con Docker Compose
- Imágenes de Docker
- Configuración de actualizaciones administradas para entornos de Docker
- Espacios de nombres de la configuración de Docker
- Configuración de Docker en Amazon Linux AMI (anterior a Amazon Linux 2)
Configuración de software en entornos de Docker
Puede utilizar la consola de Elastic Beanstalk para configurar el software que se ejecuta en las instancias del entorno.
Para configurar el entorno Docker en la consola de Elastic Beanstalk
Abra la consola de Elastic Beanstalk
y, en la lista Regiones, seleccione su. Región de AWS -
En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.
nota
Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.
En el panel de navegación, elija Configuration (Configuración).
-
En la categoría de configuración Actualizaciones, supervisión y registro, seleccione Edición de.
-
Realice los cambios de configuración necesarios.
-
Para guardar los cambios, elija Aplicar en la parte inferior de la página.
Para obtener información sobre cómo configurar el software en cualquier entorno, consulte Propiedades del entorno y otras opciones del software. En las siguientes secciones se aborda información específica de Docker.
Opciones de contenedor
La sección Container options (Opciones de contenedor) contiene opciones específicas de la plataforma. Para los entornos Docker, le permite elegir si su entorno incluye o no el servidor proxy. NGINX
Entornos con Docker Compose
Si administra su entorno de Docker con Docker Compose, Elastic Beanstalk presupone que va a ejecutar un servidor proxy como contenedor. Por lo tanto, el valor predeterminado es None para la configuración del servidor proxy y Elastic Beanstalk no proporciona ninguna configuración. NGINX
nota
Incluso si lo selecciona NGINXcomo servidor proxy, esta configuración se ignora en un entorno con Docker Compose. La opción Proxy server (Servidor proxy) seguirá teniendo el valor predeterminado None (Ninguno).
Dado que el proxy del servidor NGINX web está deshabilitado para la plataforma Docker en Amazon Linux 2 con Docker Compose, debe seguir las instrucciones para generar registros para mejorar los informes de estado. Para obtener más información, consulte Creación de registros para informes de estado avanzados con Docker Compose.
Propiedades del entorno y variables de entorno
La sección Propiedades del entorno le permite especificar los ajustes de configuración del entorno en las instancias de Amazon Elastic Compute Cloud (AmazonEC2) que ejecutan su aplicación. Las propiedades del entorno se pasan como pares de clave-valor a la aplicación. En un entorno de Docker, Elastic Beanstalk pasa las propiedades de entorno a contenedores como variables de entorno.
El código de la aplicación que se ejecuta en un contenedor puede hacer referencia a una variable de entorno por su nombre y leer su valor. El código fuente que lee estas variables de entorno variará en función del lenguaje de programación. Encontrará instrucciones para leer los valores de las variables de entorno en los lenguajes de programación que son compatibles con las plataformas administradas por Elastic Beanstalk en el tema correspondiente a la plataforma de que se trate. Para obtener una lista de enlaces a estos temas, consulte Propiedades del entorno y otras opciones del software.
Entornos con Docker Compose
Si administra su entorno de Docker con Docker Compose, debe realizar alguna configuración adicional para recuperar las variables de entorno en los contenedores. Para que los ejecutables que se ejecutan en su contenedor tengan acceso a estas variables de entorno, debe hacer referencia a ellas en el archivo docker-compose.yml
. Para obtener más información, consulte Referencia a variables de entorno en contenedores.
Referencia a variables de entorno en contenedores
Si utiliza la herramienta Docker Compose en la plataforma de Docker en Amazon Linux 2, Elastic Beanstalk genera un archivo de entorno de Docker Compose llamado .env
en el directorio raíz del proyecto de aplicación. Este archivo almacena las variables de entorno que ha configurado para Elastic Beanstalk.
nota
Si incluye un archivo .env
en el paquete de la aplicación, Elastic Beanstalk no generará un archivo .env
.
Para que un contenedor haga referencia a las variables de entorno que define en Elastic Beanstalk, debe seguir uno o ambos de estos enfoques de configuración.
-
Agregue el archivo
.env
generado por Elastic Beanstalk a la opción de configuraciónenv_file
del archivodocker-compose.yml
. -
Defina directamente las variables de entorno en el archivo
docker-compose.yml
.
Los siguientes archivos proporcionan un ejemplo. El archivo docker-compose.yml
de ejemplo muestra ambos enfoques.
-
Si define las propiedades del entorno
DEBUG_LEVEL=1
yLOG_LEVEL=error
, Elastic Beanstalk genera el siguiente archivo.env
automáticamente:DEBUG_LEVEL=1 LOG_LEVEL=error
-
En este archivo
docker-compose.yml
, la opción de configuraciónenv_file
apunta al archivo.env
y también define la variable de entornoDEBUG=1
directamente en el archivodocker-compose.yml
.services: web: build: . environment: - DEBUG=1 env_file: - .env
Notas
-
Si establece la misma variable de entorno en ambos archivos, la variable definida en el archivo
docker-compose.yml
prevalece sobre la variable definida en el archivo.env
. -
Tenga cuidado de no dejar espacios entre el signo igual (=) y el valor asignado a la variable para evitar que se agreguen espacios a la cadena.
Para obtener más información sobre las variables de entorno en Docker Compose, consulte Environment variables in Compose
Uso de la característica de interpolación para variables de entorno con Docker Compose
A partir de la versión de plataforma del 28 de julio de 2023, la ramificación de la plataforma Docker Amazon Linux 2 ofrece la característica de interpolación de Docker Compose. Con esta característica, los valores de un archivo de Compose se pueden establecer mediante variables e interpolarlos en el tiempo de ejecución. Para obtener más información sobre esta característica, consulte Interpolación
importante
Si quiere utilizar esta característica con sus aplicaciones, tenga en cuenta que tendrá que implementar un enfoque que utilice enlaces de plataforma.
Esto es necesario debido a una mitigación que implementamos en el motor de la plataforma. La mitigación garantiza la compatibilidad con versiones anteriores para los clientes que no conocen la nueva característica de interpolación y que ya tienen aplicaciones que utilizan variables de entorno con el carácter $
. El motor de plataforma actualizado evita la interpolación de forma predeterminada al reemplazar el personaje $
por caracteres $$
.
El siguiente es un ejemplo de un script de enlace de plataforma que puede configurar para permitir el uso de la característica de interpolación.
#!/bin/bash : ' example data format in .env file key1=value1 key2=value2 ' envfile="/var/app/staging/.env" tempfile=$(mktemp) while IFS= read -r line; do # split each env var string at '=' split_str=(${line//=/ }) if [ ${#split_str[@]} -eq 2 ]; then # replace '$$' with '$' replaced_str=${split_str[1]//\$\$/\$} # update the value of env var using ${replaced_str} line="${split_str[0]}=${replaced_str}" fi # append the updated env var to the tempfile echo "${line}" ≫"${tempfile}" done < "${envfile}" # replace the original .env file with the tempfile mv "${tempfile}" "${envfile}"
Coloque los enlaces de la plataforma en estos dos directorios:
-
.platform/confighooks/predeploy/
-
.platform/hooks/predeploy/
Para obtener más información, consulte Enlaces de la plataforma en el tema Ampliar las plataformas Linux de esta guía.
Creación de registros para informes de estado avanzados con Docker Compose
El agente de salud de Elastic Beanstalk proporciona métricas de estado del sistema operativo y de las aplicaciones para entornos de Elastic Beanstalk. Se basa en los formatos de registro del servidor web que transmiten información en un formato específico.
Elastic Beanstalk presupone que ejecuta un proxy de servidor web como un contenedor. Como resultado, el proxy del servidor NGINX web está deshabilitado para los entornos Docker que ejecutan Docker Compose. Debe configurar el servidor para que escriba registros en la ubicación y con el formato que utiliza el agente de estado de Elastic Beanstalk. De esta forma, podrá aprovechar al máximo los informes de estado mejorados, aunque el proxy del servidor web esté deshabilitado.
Para obtener instrucciones al respecto, consulte Configuración de los registros de servidor web
Registro personalizado del contenedor de Docker con Docker Compose
Para solucionar problemas y supervisar los servicios en contenedores de forma eficaz, puede solicitar registros de instancias a Elastic Beanstalk a través de la consola de administración del entorno o del EB. CLI Los registros de instancias se componen de registros de paquetes y registros de cola, combinados y empaquetados, para permitirle ver registros y eventos recientes de una manera eficiente y rápida.
Elastic Beanstalk crea los directorios de registro en la instancia del contenedor, uno para cada servicio definido en el archivo docker-compose.yml
, en /var/log/eb-docker/containers/
. Si utiliza la característica Docker Compose en la plataforma de Docker en Amazon Linux 2, puede montar estos directorios en la ubicación dentro de la estructura de archivos del contenedor donde se escriben los registros. Si monta directorios de registro para escribir datos de registro, Elastic Beanstalk podrá recopilar datos de registro de estos directorios.<service
name>
Si sus aplicaciones están en una plataforma de Docker que no utiliza Docker Compose, puede seguir el procedimiento estándar descrito en Registro personalizado del contenedor de Docker con Docker Compose.
Para configurar los archivos de registros del servicio como archivos de cola y registros de paquetes recuperables
-
Edite el archivo
docker-compose.yml
. -
Debajo de la clave
volumes
de su servicio, agregue un montaje de enlace de la manera siguiente:"${EB_LOG_BASE_DIR}/
<service name>
:<log directory inside container>
En el siguiente archivo
docker-compose.yml
de ejemplo:-
nginx-proxy
es<service name>
-
/var/log/nginx
es<log directory inside container>
services: nginx-proxy: image: "nginx" volumes: - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"
-
-
El directorio
var/log/nginx
contiene los registros del servicio nginx-proxy en el contenedor y se corresponde con el directorio/var/log/eb-docker/containers/nginx-proxy
del host. -
Todos los registros de este directorio ahora se pueden recuperar como registros de paquete y cola a través de la funcionalidad Solicitar registros de instancia de Elastic Beanstalk.
Notas
-
$ {EB_ _ LOG BASE _DIR} es una variable de entorno establecida por Elastic Beanstalk con el valor.
/var/log/eb-docker/containers
-
Elastic Beanstalk crea automáticamente el directorio
/var/log/eb-docker/containers/
para cada servicio del archivo<service name>
docker-compose.yml
.
Imágenes de Docker
Las ramas de la plataforma Docker y la plataforma Docker ECS gestionada de Elastic Beanstalk admiten el uso de imágenes de Docker almacenadas en un repositorio de imágenes en línea público o privado.
Especifique las imágenes por su nombre en Dockerrun.aws.json
. Tenga en cuenta estas convenciones:
-
Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo,
ubuntu
omongo
). -
Las imágenes de otros repositorios de Docker Hub se identifican con un nombre de organización (por ejemplo,
amazon/amazon-ecs-agent
). -
Las imágenes de otros repositorios online se designan además con un nombre de dominio (por ejemplo,
quay.io/assemblyline/ubuntu
o
).account-id
.dkr.ecr.us-east-2.amazonaws.com/ubuntu:trusty
En entornos que utilizan únicamente la plataforma Docker, también puede crear su propia imagen durante la creación del entorno con un archivo Dockerfile. Para obtener más información, consulte Creación de imágenes personalizadas con un Dockerfile. La plataforma Docker ECS administrada no admite esta funcionalidad.
Configuración de actualizaciones administradas para entornos de Docker
Con las actualizaciones de plataforma administradas, puede configurar el entorno para que se actualice automáticamente a la última versión de una plataforma de manera programada.
En el caso de los entornos de Docker, es posible que decida si una actualización de plataforma automática debe suceder en varias versiones de Docker, si la nueva versión de la plataforma incluye una nueva versión de Docker. Elastic Beanstalk admite actualizaciones de plataformas administradas en todas las versiones de Docker cuando se actualiza desde un entorno que ejecuta una versión de plataforma Docker más reciente que 2.9.0. Cuando una nueva versión de la plataforma incluye una nueva versión de Docker, Elastic Beanstalk aumenta el número de versión de actualización secundaria. Por lo tanto, para permitir las actualizaciones de plataforma administradas en diferentes versiones de Docker, habilítelas para las actualizaciones de versiones secundarias y de parche. Para evitar las actualizaciones de plataforma administradas en diferentes versiones de Docker, habilítelas para que solo apliquen las actualizaciones de versión de parche.
Por ejemplo, el siguiente archivo de configuración permite actualizar la plataforma gestionada UTC todos los martes a las 9:00 a. m., tanto para las actualizaciones secundarias como para las de parches, lo que permite gestionar las actualizaciones en todas las versiones de Docker:
ejemplo .ebextensions/ .config managed-platform-update
option_settings:
aws:elasticbeanstalk:managedactions:
ManagedActionsEnabled: true
PreferredStartTime: "Tue:09:00"
aws:elasticbeanstalk:managedactions:platformupdate:
UpdateLevel: minor
En los entornos que ejecutan versiones de plataforma de Docker 2.9.0 o anteriores, Elastic Beanstalk nunca realiza las actualizaciones de plataforma administradas si la nueva versión de plataforma incluye una nueva versión de Docker.
Espacios de nombres de la configuración de Docker
Puede usar un archivo de configuración para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración pueden ser específicas de la plataforma o aplicarse a todas las plataformas del servicio de Elastic Beanstalk en su conjunto. Las opciones de configuración se organizan en espacios de nombres.
nota
Esta información solo se aplica al entorno de Docker que no ejecuta Docker Compose. Esta opción tiene un comportamiento diferente con los entornos de Docker que ejecutan Docker Compose. Para obtener más información sobre los servicios proxy con Docker Compose, consulte Opciones de contenedor.
La plataforma Docker admite las opciones de los siguientes espacios de nombres, además de las opciones admitidas para todos los entornos de Elastic Beanstalk:
-
aws:elasticbeanstalk:environment:proxy
: Elija el servidor proxy para su entorno. Docker admite que se ejecute Nginx o ningún servidor proxy.
El siguiente archivo de configuración de ejemplo configura un entorno de Docker de modo que no ejecute ningún servidor proxy.
ejemplo .ebextensions/docker-settings.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: none
Configuración de Docker en Amazon Linux AMI (anterior a Amazon Linux 2)
Si su entorno Docker de Elastic Beanstalk usa una versión de la plataforma Amazon AMI Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.
Esta información le interesa si está usando imágenes de un repositorio privado. A partir de la versión 1.7 de Docker, el comando docker login cambió el nombre del archivo de autenticación y el formato del archivo. Las versiones de la plataforma AMI Docker de Amazon Linux (anteriores a Amazon Linux 2) requieren el archivo de configuración de ~/.dockercfg
formato anterior.
Con la versión 1.7 de Docker y otras posteriores, el comando docker login crea el archivo de autenticación en ~/.docker/config.json
con el siguiente formato.
{
"auths":{
"server
":{
"auth":"key
"
}
}
}
Con la versión 1.6.2 de Docker y anteriores, el comando docker login crea el archivo de autenticación en ~/.dockercfg
con el siguiente formato.
{
"server
" :
{
"auth" : "auth_token
",
"email" : "email
"
}
}
Para convertir un config.json
archivo, quite la auths
clave exterior, añada una email
clave y aplane el JSON documento para que coincida con el formato anterior.
En las versiones de la plataforma Docker de Amazon Linux 2, Elastic Beanstalk utiliza el nombre y el formato más recientes del archivo de autenticación. Si está utilizando una versión de plataforma Docker de Amazon Linux 2, puede usar el archivo de autenticación que el comando docker login crea sin aplicar ninguna conversión.
Para mejorar el rendimiento en Amazon LinuxAMI, Elastic Beanstalk configura EBS dos volúmenes de almacenamiento de Amazon para las instancias de Amazon del entorno Docker. EC2 Además del volumen raíz que se aprovisiona para todos los entornos de Elastic Beanstalk, se aprovisiona un segundo volumen de 12 GB llamado xvdcz
para el almacenamiento de imágenes en entornos de Docker.
Por ejemplo, el siguiente archivo de configuración aumenta el tamaño del volumen de almacenamiento a 100 GB con 500 aprovisionados: IOPS
ejemplo .ebextensions/blockdevice-xvdcz.config
option_settings:
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: /dev/xvdcz=:100::io1:500
Si utiliza la opción BlockDeviceMappings
para configurar volúmenes adicionales para la aplicación, debería incluir un mapeo de xvdcz
para asegurarse de que se ha creado. En el siguiente ejemplo, se configuran dos volúmenes: el volumen de almacenamiento de imágenes xvdcz
con la configuración predeterminada y un volumen de aplicaciones adicional de 24 GB llamado sdh
:
ejemplo .ebextensions/blockdevice-sdh.config
option_settings:
aws:autoscaling:launchconfiguration:
BlockDeviceMappings: /dev/xvdcz=:12:true:gp2,/dev/sdh=:24
nota
Cuando cambie la configuración de este espacio de nombres, Elastic Beanstalk sustituirá todas las instancias del entorno por instancias que ejecuten la nueva configuración. Para obtener más información, consulte Cambios de configuración.