Las variables de entorno son una forma poderosa de configurar y gestionar aplicaciones en Docker Compose. Permiten parametrizar configuraciones y hacer que las aplicaciones sean más flexibles y fáciles de mantener. En esta sección, aprenderás cómo utilizar variables de entorno en Docker Compose para mejorar la configuración de tus servicios.

¿Qué son las Variables de Entorno?

Las variables de entorno son pares clave-valor que se pueden utilizar para configurar el comportamiento de las aplicaciones. En Docker Compose, se pueden definir variables de entorno para:

  • Configurar servicios.
  • Pasar información sensible como contraseñas y tokens.
  • Parametrizar configuraciones que pueden cambiar entre entornos (desarrollo, prueba, producción).

Definiendo Variables de Entorno en Docker Compose

  1. Usando el archivo .env

Docker Compose permite definir variables de entorno en un archivo .env en el mismo directorio donde se encuentra el archivo docker-compose.yml. Estas variables se pueden referenciar en el archivo docker-compose.yml utilizando la sintaxis ${VARIABLE_NAME}.

Ejemplo de archivo .env:

MYSQL_ROOT_PASSWORD=my-secret-pw
MYSQL_DATABASE=mydatabase

Ejemplo de archivo docker-compose.yml:

version: '3.8'

services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}

  1. Definiendo Variables Directamente en el docker-compose.yml

También puedes definir variables de entorno directamente en el archivo docker-compose.yml bajo la sección environment.

Ejemplo:

version: '3.8'

services:
  web:
    image: my-web-app
    environment:
      - APP_ENV=production
      - APP_DEBUG=false

  1. Usando Variables de Entorno del Sistema

Docker Compose también puede utilizar variables de entorno definidas en el sistema operativo. Estas variables se pueden referenciar en el archivo docker-compose.yml de la misma manera que las variables definidas en el archivo .env.

Ejemplo:

version: '3.8'

services:
  api:
    image: my-api
    environment:
      - API_KEY=${API_KEY}

En este caso, la variable API_KEY debe estar definida en el entorno del sistema antes de ejecutar Docker Compose.

Ejemplo Práctico

Vamos a crear un ejemplo práctico para ilustrar cómo utilizar variables de entorno en Docker Compose.

Paso 1: Crear el archivo .env

Crea un archivo .env con el siguiente contenido:

POSTGRES_USER=admin
POSTGRES_PASSWORD=admin123
POSTGRES_DB=myapp

Paso 2: Crear el archivo docker-compose.yml

Crea un archivo docker-compose.yml con el siguiente contenido:

version: '3.8'

services:
  db:
    image: postgres:13
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - db_data:/var/lib/postgresql/data

  app:
    image: myapp:latest
    environment:
      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
    depends_on:
      - db

volumes:
  db_data:

Paso 3: Ejecutar Docker Compose

Ejecuta el siguiente comando para iniciar los servicios definidos en el archivo docker-compose.yml:

docker-compose up -d

Este comando iniciará los servicios db y app, utilizando las variables de entorno definidas en el archivo .env.

Ejercicio Práctico

Ejercicio

  1. Crea un archivo .env con las siguientes variables:

    REDIS_PASSWORD=supersecret
    REDIS_PORT=6379
    
  2. Crea un archivo docker-compose.yml que defina un servicio redis utilizando las variables de entorno del archivo .env.

Solución

Archivo .env:

REDIS_PASSWORD=supersecret
REDIS_PORT=6379

Archivo docker-compose.yml:

version: '3.8'

services:
  redis:
    image: redis:6.2
    command: redis-server --requirepass ${REDIS_PASSWORD}
    environment:
      - REDIS_PASSWORD=${REDIS_PASSWORD}
      - REDIS_PORT=${REDIS_PORT}
    ports:
      - "${REDIS_PORT}:${REDIS_PORT}"

Retroalimentación

  • Error Común: Olvidar definir las variables de entorno en el archivo .env o en el sistema operativo. Asegúrate de que todas las variables referenciadas en el archivo docker-compose.yml estén definidas.
  • Consejo: Utiliza variables de entorno para manejar configuraciones sensibles y específicas del entorno, como contraseñas y claves API, para mantener tu configuración segura y flexible.

Conclusión

Las variables de entorno en Docker Compose son una herramienta esencial para gestionar configuraciones de manera flexible y segura. Al utilizar archivos .env, variables definidas directamente en el docker-compose.yml o variables del sistema, puedes parametrizar tus servicios y hacer que tus aplicaciones sean más fáciles de mantener y desplegar en diferentes entornos.

© Copyright 2024. Todos los derechos reservados