2015-06-12 185 views
1

我想在DockerFile中使用Dokku环境变量,但没有成功。在DockerFile中使用Dokku环境变量

Dokku信封被设定为:

dokku config:set www NR_APP=AppName 

在DockerFile,我想将这个NR_APP到一个文件:

RUN sh -c 'echo "newrelic.appname=\"$NR_APP\"" >> /etc/php5/apache2/conf.d/newrelic.ini' 

但它不工作,结果文件是:

newrelic.appname= 

,如果我尝试回声只有ENV中构建具有:

RUN echo "$NR_APP" 

它返回空白。

,如果我尝试设置NR_APP DockerFile:

ENV NR_APP AppName 

它的工作原理,但我不想把它定义里面DockerFile因为它是改变基础上进行开发/生产部署的值,我也必须用license_key来做。

谢谢!

回答

0

我从来没有使用过Dokku,但你只能在运行时在启动的容器中使用这些变量。

Docker故意不允许您将变量传递给Docker构建,以便构建在各个环境中都可重现。

我怀疑你可以写一个脚本来配置应用程序在运行时使用给定的变量,然后启动它。只需从Dockerfile中的ENTRYPOINT或CMD指令引用此脚本即可。

+0

正如写在这里:http://progrium.viewdocs.io/dokku/configuration-management:“变量在运行时和应用程序构建/编译步骤都可用” 但它似乎不起作用。我会尝试底部的脚本。谢谢! –

+0

我不知道Dokku是如何工作的,但将变量放入Dockerfile的唯一方法是从模板构建Dockerfile。 –