2017-02-01 8 views
9

С docker-compose v2 переменные окружения могут быть установлены просто:докер-Compose - как избежать переменных окружения

enviroment: 
    - MONGO_PATH=mongodb://db-mongo:27017 

Полный docker-compose.yml файл существо:

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 
    [...] 

Однако, как я могу избежать окружающей среды переменные, которые не являются простой строкой?

{"database": {"data": {"host": "mongo"}}} 

Я пробовал:

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: while parsing a block mapping in "./docker-compose.yml", line 6, column 9 expected , but found '}' in "./docker-compose.yml", line 6, column 92

ответ

16

переменные среды (в том числе их имя), должны быть полностью завернуты в одинарные или двойные кавычки: "" или ''

environment: 
    - 'NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}' 

И используя двойные кавычки:

environment: 
    - 'PORT=3000' 
    - "NODE_CONFIG={\"database\": {\"data\": {\"host\": \"mongo\"}, \"session\": {\"host\": \"redis\" }}}" 

Примечательно отметить, что использование двойных кавычек "", как Баш, позволит размещение переменных в переменной окружения.

"MY_HOME_ENV_VARIABLE=${HOME}" 
+0

это также относится к -env-файлу, потому что я пробовал его, и он не работает ... –

 Смежные вопросы

  • Нет связанных вопросов^_^