2017-02-01 13 views
9

kaçmayı nasıl basitçe tarafından ayarlanabilir:liman işçisi-oluşturma deneyimi - Ortam değişkenlerini <code>docker-compose</code> v2 ortam değişkenleri ile

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

tam docker-compose.yml dosya varlık: Ancak

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

, nasıl çevreyi kaçabilir Düz bir dize olmayan değişkenler?

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

Denedim: Tamamen tek veya çift tırnak içine sarılacak zorunda (kendi adı dahil)

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

cevap

16

Çevre değişkenlerini: "" veya ''

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

Ve çift tırnak kullanarak:

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

bash gibi çift tırnak "" kullanarak, ortam değişkeni içindeki değişkenler yerleştirerek sağlayacaktır dikkat etmek çekicidir.

"MY_HOME_ENV_VARIABLE=${HOME}" 
+0

bu, --env dosyasında da geçerlidir, çünkü denedim ve çalışmaz ... –

İlgili konular