首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取Dockerfile中的环境变量值

获取Dockerfile中的环境变量值
EN

Stack Overflow用户
提问于 2013-10-23 17:16:03
回答 5查看 300.3K关注 0票数 311

我正在为一个ruby应用构建一个容器。我的应用程序的配置包含在环境变量中(使用dotenv加载到应用程序内部)。

其中一个配置变量是应用程序的公共ip,它在内部用于建立链接。我需要添加一个dnsmasq条目,将这个ip指向容器中的127.0.0.1,这样它就可以获取应用程序的链接,就好像它没有被容器化一样。

因此,我尝试在Dockerfile文件中设置一个ENV,它会将一个环境变量传递给容器。

我试过一些方法。

代码语言:javascript
复制
ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`

不过,所有内容都传递"REQUEST_DOMAIN“字符串,而不是环境变量的值。有没有办法将环境变量值从主机传递到容器?

EN

回答 5

Stack Overflow用户

发布于 2014-01-28 02:13:44

所以你可以这样做:cat Dockerfile | envsubst | docker build -t my-target -

然后创建一个包含以下内容的Dockerfile:

代码语言:javascript
复制
ENV MY_ENV_VAR $MY_ENV_VAR

我猜有些特殊字符可能有问题,但这至少在大多数情况下是有效的。

票数 61
EN

Stack Overflow用户

发布于 2017-03-14 02:56:52

在不丧失使用COPYADD等命令的能力,并且不使用中间文件的情况下,使用envsubst的另一种方法是使用Bash的Process Substitution

代码语言:javascript
复制
docker build -f <(envsubst < Dockerfile) -t my-target .
票数 20
EN

Stack Overflow用户

发布于 2015-03-20 06:57:57

从运行时创建的文件加载环境变量。

代码语言:javascript
复制
export MYVAR="my_var_outside"
cat > build/env.sh <<EOF
MYVAR=${MYVAR}
EOF

..。然后在Dockerfile中

代码语言:javascript
复制
ADD build /build
RUN /build/test.sh

test.sh从env.sh加载MYVAR的位置

代码语言:javascript
复制
#!/bin/bash
. /build/env.sh
echo $MYVAR > /tmp/testfile
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19537645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档