Comprender el papel de las variables de entorno en Docker Compose

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial lo guiará a través de la importancia y el uso de las variables de entorno en Docker Compose. Aprenderá cómo definir y utilizar variables de entorno para configurar sus aplicaciones basadas en Docker, asegurando un proceso de implementación más flexible y mantenible. Al final de este artículo, tendrá una comprensión sólida del papel de las variables de entorno en Docker Compose y cómo aplicarlas de manera efectiva.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/run -.-> lab-398444{{"Comprender el papel de las variables de entorno en Docker Compose"}} docker/info -.-> lab-398444{{"Comprender el papel de las variables de entorno en Docker Compose"}} end

Comprender las Variables de Entorno en Docker Compose

Docker Compose es una herramienta poderosa para definir y gestionar aplicaciones de múltiples contenedores. Una de las características clave de Docker Compose es la capacidad de utilizar variables de entorno para configurar y personalizar el comportamiento de su aplicación. Las variables de entorno juegan un papel crucial en Docker Compose, ya que le permiten separar la configuración del código de su aplicación, lo que la hace más portátil y fácil de gestionar.

Comprender las Variables de Entorno

Las variables de entorno son un conjunto de pares clave-valor que están disponibles para su aplicación en tiempo de ejecución. Proporcionan una forma de almacenar y acceder a la configuración, información sensible y otros datos que su aplicación necesita para funcionar correctamente.

En el contexto de Docker Compose, las variables de entorno se pueden definir a nivel de servicio, lo que le permite personalizar el comportamiento de contenedores individuales dentro de su aplicación. Esta flexibilidad le permite adaptar fácilmente su aplicación a diferentes entornos, como desarrollo, preproducción y producción, sin tener que modificar el código de su aplicación.

Definir Variables de Entorno en Docker Compose

Para definir variables de entorno en su archivo Docker Compose, puede utilizar las palabras clave environment o env_file. La palabra clave environment le permite definir variables de entorno directamente en el archivo Compose, mientras que la palabra clave env_file le permite especificar un archivo que contiene las variables de entorno.

A continuación, se muestra un ejemplo de cómo definir variables de entorno utilizando la palabra clave environment:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=database
      - DB_USER=myuser
      - DB_PASSWORD=secretpassword

En este ejemplo, el servicio web tiene tres variables de entorno definidas: DB_HOST, DB_USER y DB_PASSWORD.

Como alternativa, puede utilizar la palabra clave env_file para especificar un archivo que contiene las variables de entorno:

version: "3"
services:
  web:
    image: my-web-app
    env_file:
      - web-app.env

En este caso, las variables de entorno se definen en un archivo llamado web-app.env, que podría tener el siguiente aspecto:

DB_HOST=database
DB_USER=myuser
DB_PASSWORD=secretpassword

Ambos métodos son válidos y se pueden utilizar indistintamente, según sus preferencias y la complejidad de sus variables de entorno.

Acceder a las Variables de Entorno en su Aplicación

Una vez que haya definido las variables de entorno en su archivo Docker Compose, su aplicación puede acceder a ellas utilizando el mecanismo adecuado para su lenguaje de programación o framework. Por ejemplo, en una aplicación Node.js, puede acceder a las variables de entorno utilizando el objeto process.env.

const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;

Del mismo modo, en una aplicación Python, puede utilizar el módulo os.environ para acceder a las variables de entorno.

import os

db_host = os.environ.get('DB_HOST')
db_user = os.environ.get('DB_USER')
db_password = os.environ.get('DB_PASSWORD')

Al utilizar variables de entorno, puede mantener la configuración de su aplicación separada del código, lo que la hace más flexible y fácil de gestionar.

Definir y Usar Variables de Entorno

Definir Variables de Entorno en Docker Compose

Como se mencionó anteriormente, puede definir variables de entorno en su archivo Docker Compose utilizando las palabras clave environment o env_file. Exploremos estas opciones con más detalle.

Usar la Palabra Clave environment

La palabra clave environment le permite definir variables de entorno directamente en el archivo Compose. Aquí hay un ejemplo:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=database
      - DB_USER=myuser
      - DB_PASSWORD=secretpassword

En este ejemplo, el servicio web tiene tres variables de entorno definidas: DB_HOST, DB_USER y DB_PASSWORD.

Usar la Palabra Clave env_file

Como alternativa, puede utilizar la palabra clave env_file para especificar un archivo que contiene las variables de entorno. Esto puede ser útil cuando tiene una gran cantidad de variables de entorno o desea mantenerlas separadas del archivo Compose.

version: "3"
services:
  web:
    image: my-web-app
    env_file:
      - web-app.env

En este caso, las variables de entorno se definen en un archivo llamado web-app.env, que podría tener el siguiente aspecto:

DB_HOST=database
DB_USER=myuser
DB_PASSWORD=secretpassword

Acceder a las Variables de Entorno en su Aplicación

Una vez que haya definido las variables de entorno en su archivo Docker Compose, su aplicación puede acceder a ellas utilizando el mecanismo adecuado para su lenguaje de programación o framework.

A continuación, se muestra un ejemplo de cómo acceder a las variables de entorno en una aplicación Node.js:

const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;

Y en una aplicación Python:

import os

db_host = os.environ.get('DB_HOST')
db_user = os.environ.get('DB_USER')
db_password = os.environ.get('DB_PASSWORD')

Al utilizar variables de entorno, puede mantener la configuración de su aplicación separada del código, lo que la hace más flexible y fácil de gestionar.

Aplicar Variables de Entorno para la Configuración

Separar la Configuración del Código

Uno de los principales beneficios de utilizar variables de entorno en Docker Compose es la capacidad de separar la configuración del código de su aplicación. Esta separación de responsabilidades hace que su aplicación sea más portátil, mantenible y fácil de gestionar.

Al almacenar la configuración en variables de entorno, puede adaptar fácilmente su aplicación a diferentes entornos, como desarrollo, preproducción y producción, sin tener que modificar el código de su aplicación. Este enfoque también ayuda a garantizar que la información sensible, como las credenciales de la base de datos o las claves de API, no se codifique de forma rígida en su aplicación.

Configurar Diferentes Entornos

Consideremos un ejemplo en el que tiene una aplicación web que necesita conectarse a una base de datos. Puede utilizar variables de entorno para configurar la conexión a la base de datos en diferentes entornos.

Supongamos que tiene el siguiente archivo Docker Compose:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=${DB_HOST}
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
  database:
    image: postgres
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}

En este ejemplo, los servicios web y database utilizan variables de entorno para configurar sus respectivas opciones. Las variables DB_HOST, DB_USER, DB_PASSWORD y DB_NAME no se definen en el archivo Compose, sino en el entorno donde se ejecuta el archivo Compose.

Para ejecutar la aplicación en diferentes entornos, puede crear archivos de variables de entorno separados o establecer las variables directamente en la shell. Por ejemplo, podría tener los siguientes archivos de variables de entorno:

development.env

DB_HOST=localhost
DB_USER=myuser
DB_PASSWORD=devpassword
DB_NAME=myapp_dev

production.env

DB_HOST=production-db.example.com
DB_USER=produser
DB_PASSWORD=prodpassword
DB_NAME=myapp_prod

Luego, puede utilizar el archivo de variables de entorno adecuado cuando ejecute sus comandos de Docker Compose:

## Ejecutar en el entorno de desarrollo
docker-compose --env-file=development.env up -d

## Ejecutar en el entorno de producción
docker-compose --env-file=production.env up -d

Al utilizar variables de entorno para configurar su aplicación, puede adaptarla fácilmente a diferentes entornos sin tener que modificar el archivo Compose o el código de la aplicación.

Mejores Prácticas para las Variables de Entorno

Al trabajar con variables de entorno en Docker Compose, es importante seguir algunas mejores prácticas:

  1. Utilice Nombres de Variables Significativos: Elija nombres descriptivos y significativos para sus variables de entorno para que sean más fáciles de entender y mantener.
  2. Proteja la Información Sensible: Asegúrese de que la información sensible, como las credenciales de la base de datos o las claves de API, no se exponga en su archivo Compose o en los archivos de variables de entorno.
  3. Proporcione Valores Predeterminados: Considere proporcionar valores predeterminados para las variables de entorno en su archivo Compose, para que su aplicación pueda seguir funcionando si una variable no está configurada.
  4. Documente Sus Variables: Documente el propósito y los valores esperados de cada variable de entorno en la documentación de su proyecto o en el archivo README.
  5. Utilice Archivos Específicos del Entorno: Separe la configuración específica del entorno en diferentes archivos de variables de entorno para mantener su configuración organizada y mantenible.

Al seguir estas mejores prácticas, puede utilizar eficazmente las variables de entorno para gestionar la configuración de sus aplicaciones basadas en Docker Compose.

Resumen

En este tutorial, ha explorado el papel de las variables de entorno en Docker Compose. Ha aprendido cómo definir y utilizar variables de entorno para configurar sus aplicaciones basadas en Docker, lo que garantiza un proceso de implementación más flexible y adaptable. Al aprovechar las variables de entorno, puede gestionar fácilmente diferentes configuraciones, como las cadenas de conexión a la base de datos, las claves de API y otra información sensible, sin codificarlas de forma rígida en sus archivos Docker Compose. Comprender el poder de las variables de entorno en Docker Compose es una habilidad crucial para construir y mantener aplicaciones basadas en Docker robustas, escalables y mantenibles.