如何将多行变量传递给docker容器?

时间:2016-10-10 17:41:02

标签: docker yaml docker-compose

根据this comment,docker compose支持多行变量:

environment:
  KEY: |-
    line1
    line2

但是,当我在容器中执行echo $KEY时,它已用空格替换了换行符:

line1 line2

我错过了什么吗?我的泊坞版版本是1.12.1。

3 个答案:

答案 0 :(得分:6)

YAML语法正确。 shell命令不是:

echo "$KEY"

用换行符打印字符串。

答案 1 :(得分:2)

几天前遇到同样的问题并通过以下方式解决:

KEY: "line1\nline2"

希望这也有助于你的情况。

答案 2 :(得分:0)

如果您需要在 env 变量中包含 json,请尝试使用 > 此解决方案非常有效。有很多方法可以使用 multiline strings in YAML

version: '2'
services:
  catalog-api-autoscaling:
    image: company.it/project/catalog-api-autoscaling:latest
    container_name: api-autoscaling
    ports:
      - "8083:8083"
    environment:
        CONFIG_ABC: >
          {
            "database": {
               "catalog": {
                   "credentials": {
                       "username": "scott",
                       "password": "tiger",
                       "datbase": "catalog",
                       "host": "gn.dmfkd.lan"
                    }
                }
            }
          }
        CONFIG_DEF: >
          {
            "urlRegex": "/.*",
            "script": {
              "scriptPath": "example-python-app.py"
            },
            "runtime": "python27",
            "threadsafe": true,
          }