docker-compose - 如何转义环境变量 [英] docker-compose - how to escape environment variables
问题描述
使用 docker-compose
v2 环境变量可以简单地设置:
环境:- MONGO_PATH=mongodb://db-mongo:27017
完整的 docker-compose.yml
文件是:
版本:'2'服务:网络:建造: .环境:- MONGO_PATH=mongodb://db-mongo:27017端口:- 3000:3000"卷:- .:/应用程序-/app/node_modules依赖于取决于:- db-mongo- db-redis数据库蒙戈:图片:蒙戈重新启动:除非停止命令:--smallfiles端口:- 27017:27017"卷:- ./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 列中找到了 '}'
环境变量(包括它们的名字),必须完全用单引号或双引号括起来:""
或 ''
环境:- 'NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'
并使用双引号:
环境:- '端口 = 3000'- "NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis"}}}"
值得注意的是,使用双引号 ""
就像 bash 一样,将允许将变量放在环境变量中.
"MY_HOME_ENV_VARIABLE=${HOME}"
With docker-compose
v2 environment variables can be set by simply:
enviroment:
- MONGO_PATH=mongodb://db-mongo:27017
The full docker-compose.yml
file being:
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
[...]
However, how can I escape environment variables that are not a plain string?
{"database": {"data": {"host": "mongo"}}}
I tried:
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
Environment variables (including their name), have to be fully wrapped inside single or double quotes: ""
or ''
environment:
- 'NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'
And using double quotes:
environment:
- 'PORT=3000'
- "NODE_CONFIG={"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}"
It is remarkable to note that using double quotes ""
, like bash, will allow placing variables inside the environment variable.
"MY_HOME_ENV_VARIABLE=${HOME}"
这篇关于docker-compose - 如何转义环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!