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 fijos 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 tu archivo Compose, sigue estos pasos:
- Almacena las variables de entorno en un archivo
.enven el mismo directorio que tudocker-compose.yml; - Haz referencia a las variables en tu archivo Compose usando la sintaxis
${VARIABLE_NAME}; - Sobrescribe variables pasándolas directamente en la terminal o como parte de tu pipeline de CI/CD.
Supón que deseas configurar la contraseña de la base de datos y el puerto de la aplicación usando variables de entorno. Crea un archivo .env que contenga:
DB_PASSWORD=supersecret
APP_PORT=8080
En tu docker-compose.yml, referencia estas variables de la siguiente manera:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Cuando ejecutes 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 tu 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, puedes utilizar varias técnicas para gestionar secretos en Docker Compose:
- Almacena los valores sensibles en un archivo
.envseparado y asegúrate de excluir este archivo del control de versiones usando.gitignore; - Utiliza la compatibilidad de Docker Compose con Docker secrets si despliegas con Docker Swarm, lo que permite montar secretos de forma segura como archivos dentro de los contenedores;
- Haz referencia a secretos como archivos en el host y móntalos en el contenedor usando la clave
volumesen tu archivo Compose.
Ejemplo: Para evitar exponer una contraseña de base de datos, guárdala en un archivo llamado db_password.txt y móntalo 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. Revisa siempre tu configuración y flujos de trabajo para asegurar que los secretos estén protegidos, y nunca incluyas datos sensibles en el 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