2017-02-01 15 views
9

Với docker-compose v2 biến môi trường có thể được thiết lập bằng cách đơn giản:Docker-soạn - làm thế nào để thoát khỏi các biến môi trường

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

Các docker-compose.yml tập tin đầy đủ hạnh phúc:

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

Tuy nhiên, làm thế nào tôi có thể thoát khỏi môi trường các biến không phải là một chuỗi đơn giản?

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

tôi đã cố gắng:

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

Trả lời

16

Biến môi trường (bao gồm tên họ), đã được bao bọc hoàn toàn bên trong một người hoặc hai dấu ngoặc kép: "" hoặc ''

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

Và sử dụng dấu ngoặc kép:

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

Nó là đáng chú ý cần lưu ý rằng việc sử dụng dấu ngoặc kép "", như bash, sẽ cho phép đặt các biến bên trong biến môi trường.

"MY_HOME_ENV_VARIABLE=${HOME}" 
+0

cũng áp dụng cho tệp --env, vì tôi đã thử nó và nó không hoạt động ... –

Các vấn đề liên quan