为了账号安全,请及时绑定邮箱和手机立即绑定

使用Dockerfile设置多行环境变量

使用Dockerfile设置多行环境变量

慕尼黑5688855 2021-04-12 17:40:34
我想在Dockerfile中设置多行环境变量。通过命令行工作如果我通过docker run所有环境都可以通过环境变量。CONFIG="port: 4466databases:  prod:    connector: mysql    active: true    host: 33.333.333.333    port: 3306    user: root    password: pass"docker run --env CONFIG="$CONFIG" ubuntu:latest env | grep 'CONFIG'输出(仅一行,因为它解释为多行变量)CONFIG=port: 4466无法通过dockerfile工作Docker文件FROM ubuntu:latestENV CONFIG 'port: 4466\ndatabases:\n  prod:\n    connector: mysql\n    active: true\n    host: host\n    port: 3306\n    user: root\n    password: pass'构建并运行Docker映像docker build -t multilinetest .docker run multilinetest env | grep 'CONFIG'输出CONFIG=port: 4466\ndatabases:\n  prod:\n    connector: mysql\n    active: true\n    host: host\n    port: 3306\n    user: root\n    password: pass预期的两种情况都应存储相同的环境变量(我将此环境变量传递到需要多行字符串的第三方图像中)
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

通过将多行环境变量作为arg传递给docker build,我能够使它工作。


Docker文件


FROM ubuntu:latest

ARG CONFIG

ENV CONFIG $CONFIG

生成命令


CONFIG="port: 4466

databases:

  prod:

    connector: mysql

    active: true

    host: 33.333.333.333

    port: 3306

    user: root

    password: pass"

docker build --build-arg CONFIG="$CONFIG" ubuntu:latest env | grep 'CONFIG'


查看完整回答
反对 回复 2021-04-16
?
隔江千里

TA贡献1906条经验 获得超10个赞

转义换行符可以正常工作。


Docker文件

ENV BUILD_DEPENDENCIES apt-utils \

  curl \

  libc-dev \

  gcc \

  gnupg2

输出

Step 8/48 : ENV BUILD_DEPENDENCIES apt-utils   curl   libc-dev   gcc   gnupg2

 ---> Running in 65b0ad105af4


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 1462 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信