Variables de Entorno y Configuración en Compose
Uso de variables de entorno en docker-compose.yml
Las variables de entorno permiten crear configuraciones de Docker Compose flexibles y reutilizables. Al definir variables, se evita codificar valores como puertos, etiquetas de imágenes o credenciales directamente en el archivo docker-compose.yml. En su lugar, se hace referencia a estas variables y Docker Compose sustituye sus valores en tiempo de ejecución. Este enfoque es especialmente útil al desplegar la misma aplicación en diferentes entornos, como desarrollo, pruebas o producción.
Para definir y utilizar variables de entorno en su archivo Compose, siga estos pasos:
- Almacene las variables de entorno en un archivo
.enven el mismo directorio que sudocker-compose.yml; - Haga referencia a las variables en su archivo Compose utilizando la sintaxis
${VARIABLE_NAME}; - Sobrescriba variables pasándolas directamente en la terminal o como parte de su pipeline de CI/CD.
Suponga que desea configurar la contraseña de la base de datos y el puerto de la aplicación usando variables de entorno. Cree un archivo .env que contenga:
DB_PASSWORD=supersecret
APP_PORT=8080
En su docker-compose.yml, haga referencia a estas variables de la siguiente manera:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Cuando ejecute docker-compose up, Docker Compose sustituirá los valores del archivo .env en la configuración. Este método mantiene los datos sensibles o específicos del entorno fuera del archivo Compose y hace que su configuración sea más portátil.
Gestión de secretos y datos sensibles en archivos Compose
Aunque las variables de entorno son convenientes, no siempre son la forma más segura de manejar información sensible como contraseñas, claves API o certificados. Las variables de entorno pueden exponerse a través de registros, listas de procesos o control de versiones si no se gestionan cuidadosamente. Para mejorar la seguridad, puede utilizar varias técnicas para gestionar secretos en Docker Compose:
- Almacene valores sensibles en un archivo
.envseparado y asegúrese de que este archivo esté excluido del control de versiones usando.gitignore; - Utilice la compatibilidad de Docker Compose con Docker secrets si está desplegando con Docker Swarm, lo que permite montar secretos de forma segura como archivos dentro de los contenedores;
- Haga referencia a secretos como archivos en el host y móntelos en el contenedor usando la clave
volumesen su archivo Compose.
Ejemplo: Para evitar exponer una contraseña de base de datos, guárdela en un archivo llamado db_password.txt y móntelo en el contenedor:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Este enfoque mantiene el secreto real fuera del archivo Compose y de las variables de entorno, reduciendo el riesgo de exposición accidental. Revise siempre su configuración y flujos de trabajo para asegurar que los secretos estén protegidos, y nunca suba datos sensibles al control de versiones.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how to override environment variables at runtime?
What are the best practices for keeping secrets secure in Docker Compose?
How do Docker secrets work with Compose files?
Awesome!
Completion rate improved to 7.14
Variables de Entorno y Configuración en Compose
Desliza para mostrar el menú
Uso de variables de entorno en docker-compose.yml
Las variables de entorno permiten crear configuraciones de Docker Compose flexibles y reutilizables. Al definir variables, se evita codificar valores como puertos, etiquetas de imágenes o credenciales directamente en el archivo docker-compose.yml. En su lugar, se hace referencia a estas variables y Docker Compose sustituye sus valores en tiempo de ejecución. Este enfoque es especialmente útil al desplegar la misma aplicación en diferentes entornos, como desarrollo, pruebas o producción.
Para definir y utilizar variables de entorno en su archivo Compose, siga estos pasos:
- Almacene las variables de entorno en un archivo
.enven el mismo directorio que sudocker-compose.yml; - Haga referencia a las variables en su archivo Compose utilizando la sintaxis
${VARIABLE_NAME}; - Sobrescriba variables pasándolas directamente en la terminal o como parte de su pipeline de CI/CD.
Suponga que desea configurar la contraseña de la base de datos y el puerto de la aplicación usando variables de entorno. Cree un archivo .env que contenga:
DB_PASSWORD=supersecret
APP_PORT=8080
En su docker-compose.yml, haga referencia a estas variables de la siguiente manera:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Cuando ejecute docker-compose up, Docker Compose sustituirá los valores del archivo .env en la configuración. Este método mantiene los datos sensibles o específicos del entorno fuera del archivo Compose y hace que su configuración sea más portátil.
Gestión de secretos y datos sensibles en archivos Compose
Aunque las variables de entorno son convenientes, no siempre son la forma más segura de manejar información sensible como contraseñas, claves API o certificados. Las variables de entorno pueden exponerse a través de registros, listas de procesos o control de versiones si no se gestionan cuidadosamente. Para mejorar la seguridad, puede utilizar varias técnicas para gestionar secretos en Docker Compose:
- Almacene valores sensibles en un archivo
.envseparado y asegúrese de que este archivo esté excluido del control de versiones usando.gitignore; - Utilice la compatibilidad de Docker Compose con Docker secrets si está desplegando con Docker Swarm, lo que permite montar secretos de forma segura como archivos dentro de los contenedores;
- Haga referencia a secretos como archivos en el host y móntelos en el contenedor usando la clave
volumesen su archivo Compose.
Ejemplo: Para evitar exponer una contraseña de base de datos, guárdela en un archivo llamado db_password.txt y móntelo en el contenedor:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Este enfoque mantiene el secreto real fuera del archivo Compose y de las variables de entorno, reduciendo el riesgo de exposición accidental. Revise siempre su configuración y flujos de trabajo para asegurar que los secretos estén protegidos, y nunca suba datos sensibles al control de versiones.
¡Gracias por tus comentarios!