Con docker-compose v2, las variables de entorno se pueden configurar simplemente:
enviroment: - MONGO_PATH=mongodb://db-mongo:27017 El archivo docker-compose.yml completo es:
version: '2' services: web: build: . environment: - MONGO_PATH=mongodb://db-mongo:27017 ports: - "3000:3000" volumes: - .:/app - /app/node_modules depends_on: - db-mongo - db-redis db-mongo: image: mongo restart: unless-stopped command: --smallfiles ports: - "27017:27017" volumes: - ./data:/data/db [...]Sin embargo, ¿cómo puedo escapar de las variables de entorno que no son una cadena simple?
{"database": {"data": {"host": "mongo"}}}Lo intenté:
NODE_CONFIG=\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\} NODE_CONFIG="\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\}" NODE_CONFIG='{"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'ERROR: yaml.parser.ParserError: al analizar una asignación de bloques en "./docker-compose.yml", se esperaba la línea 6, columna 9, pero se encontró '}' en "./docker-compose.yml", línea 6, columna 92
Las variables de entorno (incluido su nombre) deben incluirse completamente entre comillas simples o dobles : "" o ''
environment: - 'NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'Y usando comillas dobles:
environment: - 'PORT=3000' - "NODE_CONFIG={\"database\": {\"data\": {\"host\": \"mongo\"}, \"session\": {\"host\": \"redis\" }}}" Es notable notar que el uso de comillas dobles "" , como bash, permitirá colocar variables dentro de la variable de entorno.
"MY_HOME_ENV_VARIABLE=${HOME}"