docker-compose-如何转义环境变量
使用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}"
以上是 docker-compose-如何转义环境变量 的全部内容, 来源链接: utcz.com/qa/432476.html