gpt4 book ai didi

docker-compose - 如何转义环境变量

转载 作者:IT老高 更新时间:2023-10-28 12:38:10 30 4
gpt4 key购买 nike

使用 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" }}}'

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:
- '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 - 如何转义环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988809/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com