gpt4 book ai didi

linux - 使用 Dockerfile 设置多行环境变量

转载 作者:IT王子 更新时间:2023-10-29 00:57:15 27 4
gpt4 key购买 nike

我想在我的 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 工作

Dockerfile

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

预计

两种情况都应该存储相同的环境变量(我将这个环境变量传递给需要多行字符串的第 3 方图像)

最佳答案

我能够通过将多行环境变量作为构建参数传递给 docker build 来实现这一点。

Dockerfile

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'

关于linux - 使用 Dockerfile 设置多行环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com