使用
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列找到了"}"
- 'MYVAR=$GJ'
将尝试从 Docker 环境文件中解析$GJ
作为变量。请参见https://github.com/docker/compose/issues/5965
。需要使用双美元符号$$
来表示一个转义的$
。 - Myridium