猿问

使用Dockerfile设置多行环境变量

我想在Dockerfile中设置多行环境变量。


通过命令行工作

如果我通过docker run所有环境都可以通过环境变量。


CONFIG="port: 4466

databases:

  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:latest

ENV 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

预期的

两种情况都应存储相同的环境变量(我将此环境变量传递到需要多行字符串的第三方图像中)


慕尼黑5688855
浏览 1463回答 2
2回答

慕哥9229398

通过将多行环境变量作为arg传递给docker build,我能够使它工作。Docker文件FROM ubuntu:latestARG CONFIGENV CONFIG $CONFIG生成命令CONFIG="port: 4466databases:  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'

隔江千里

转义换行符可以正常工作。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
随时随地看视频慕课网APP
我要回答