Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Variables de Entorno y Configuración en Compose | Trabajando con Docker Compose
Conceptos Básicos de Docker

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 .env en el mismo directorio que tu docker-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 .env separado 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 volumes en 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.

question mark

¿Cuál es la principal ventaja de usar variables de entorno en un archivo Docker Compose?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 4
some-alt