Hay varias partes de Compose que se ocupan de las variables de entorno en un sentido u otro. Esta página debería ayudarlo a encontrar la información que necesita.

Sustituir variables de entorno en archivos de composición

Es posible usar variables de entorno en su shell para completar valores dentro de un archivo Compose:

web:
  image: "webapp:${TAG}"

Para obtener más información, consulte la sección Sustitución de variables en la referencia del archivo de composición.

Establecer variables de entorno en contenedores

Puede establecer variables de entorno en los contenedores de un servicio con la clave ‘entorno’, al igual que con docker run -e VARIABLE=VALUE ...:

web:
  environment:
    - DEBUG=1

Pasar variables de entorno a contenedores

Puede pasar variables de entorno desde su shell directamente a los contenedores de un servicio con la clave ‘entorno’ al no darles un valor, al igual que con docker run -e VARIABLE ...:

web:
  environment:
    - DEBUG

El valor de la DEBUG La variable en el contenedor se toma del valor de la misma variable en el shell en el que se ejecuta Compose.

La opción de configuración “env_file”

Puede pasar múltiples variables de entorno desde un archivo externo a los contenedores de un servicio con la opción ‘env_file’, al igual que con docker run --env-file=FILE ...:

web:
  env_file:
    - web-variables.env

Establecer variables de entorno con ‘docker-compose run’

Como con docker run -e, puede establecer variables de entorno en un contenedor único con docker-compose run -e:

docker-compose run -e DEBUG=1 web python console.py

También puede pasar una variable desde el shell sin darle un valor:

docker-compose run -e DEBUG web python console.py

El valor de la DEBUG La variable en el contenedor se toma del valor de la misma variable en el shell en el que se ejecuta Compose.

El archivo “.env”

Puede establecer valores predeterminados para las variables de entorno a las que se hace referencia en el archivo Compose, o que se utilizan para configurar Compose, en un archivo de entorno llamado .env:

$ cat .env
TAG=v1.5

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "webapp:${TAG}"

Cuando corres docker-compose up, los web el servicio definido anteriormente usa la imagen webapp:v1.5. Puede verificar esto con el comando config, que imprime la configuración de su aplicación resuelta en la terminal:

$ docker-compose config

version: '3'
services:
  web:
    image: 'webapp:v1.5'

Los valores en el shell tienen prioridad sobre los especificados en el .env expediente. Si pones TAG a un valor diferente en su caparazón, la sustitución en image usa eso en su lugar:

$ export TAG=v2.0
$ docker-compose config

version: '3'
services:
  web:
    image: 'webapp:v2.0'

Cuando establece la misma variable de entorno en varios archivos, esta es la prioridad que usa Compose para elegir qué valor usar:

  1. Redactar archivo
  2. Variables de entorno de shell
  3. Archivo de entorno
  4. Dockerfile
  5. La variable no está definida

En el siguiente ejemplo, configuramos la misma variable de entorno en un archivo de entorno y el archivo de composición:

$ cat ./Docker/api/api.env
NODE_ENV=test

$ cat docker-compose.yml
version: '3'
services:
  api:
    image: 'node:6-alpine'
    env_file:
     - ./Docker/api/api.env
    environment:
     - NODE_ENV=production

Cuando ejecuta el contenedor, la variable de entorno definida en el archivo Compose tiene prioridad.

$ docker-compose exec api node

> process.env.NODE_ENV
'production'

Tener alguna ARG o ENV entorno en un Dockerfile evalúa solo si no hay una entrada de Docker Compose para environment o env_file.

Específicos para contenedores NodeJS

Si tienes un package.json entrada para script:start igual que NODE_ENV=test node server.js, esto anula cualquier configuración en su docker-compose.yml expediente.

Configurar Compose usando variables de entorno

Hay varias variables de entorno disponibles para que configure el comportamiento de la línea de comandos de Docker Compose. Comienzan con COMPOSE_ o DOCKER_y están documentados en Variables de entorno CLI.

Variables de entorno creadas por enlaces

Cuando se usa la opción ‘enlaces’ en un archivo Compose v1, se crean variables de entorno para cada enlace. Están documentados en la referencia de variables de entorno de enlace.

Sin embargo, estas variables están en desuso. En su lugar, utilice el alias del enlace como nombre de host.

componer, orquestación, medio ambiente, archivo env