docker-compose-如何转义环境变量 [英] docker-compose - how to escape environment variables

查看:1006
本文介绍了docker-compose-如何转义环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用docker-compose v2,可以简单地设置环境变量:

With docker-compose v2 environment variables can be set by simply:

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
  [...]

但是,如何转义不是纯字符串的环境变量?

However, how can I escape environment variables that are not a plain string?

{"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列中找到}"

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

并使用双引号:

environment:
  - 'PORT=3000'
  - "NODE_CONFIG={\"database\": {\"data\": {\"host\": \"mongo\"}, \"session\": {\"host\": \"redis\" }}}"

值得注意的是,像bash一样,使用双引号""可以将变量放在环境变量中.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆