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:
- Redactar archivo
- Variables de entorno de shell
- Archivo de entorno
- Dockerfile
- 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 parascript:start
igual queNODE_ENV=test node server.js
, esto anula cualquier configuración en sudocker-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