【问题标题】:docker-compose - how to escape environment variablesdocker-compose - 如何转义环境变量
【发布时间】:2017-06-18 17:35:34
【问题描述】:

使用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”,第 6 行,第 9 列,但 在“./docker-compose.yml”第 6 行第 92 列中找到 '}'

【问题讨论】:

    标签: docker environment-variables docker-compose


    【解决方案1】:

    环境变量(包括它们的名称),必须用单引号或双引号括起来""''

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

    【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-02-03
    • 2019-02-25
    • 2022-06-11
    • 2019-12-18
    • 2019-07-26
    相关资源
    最近更新 更多