docker-compose
v2環境変数は、次のように簡単に設定できます。
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" }}}'
エラー:yaml.parser.ParserError: "./docker-compose.yml"、6行、9列目でブロックマッピングを解析中に、" ./ docker-compose.yml "、6行目で '}'が見つかりました列92
環境変数(名前を含む)、一重引用符または二重引用符で完全にラップする必要があります:""
または ''
environment:
- 'NODE_CONFIG={"database": {"data": {"Host": "mongo"}, "session": {"Host": "redis" }}}'
そして、二重引用符を使用して:
environment:
- 'PORT=3000'
- "NODE_CONFIG={\"database\": {\"data\": {\"Host\": \"mongo\"}, \"session\": {\"Host\": \"redis\" }}}"
二重引用符の使用""
は、bashと同様に、環境変数内に変数を配置できます。
"MY_HOME_ENV_VARIABLE=${HOME}"