繁体   English   中英

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

[英]docker-compose - how to escape environment variables

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM