如何使用Docker在构建期间配置文件

如何使用Docker在构建期间配置文件,docker,dockerfile,Docker,Dockerfile,我有一些配置文件需要添加到容器中,带有动态变量。例如: # # -= One of my app configuration files =- # string SERVER = "127.0.0.1"; string LANG = "{dynamic_value}"; string OTHERVAR = "{other_dynamic_value}"; 是否可能有一个存储所有这些变量的外部配置文件 # # -= My Docker centralised config file =-

我有一些配置文件需要添加到容器中,带有动态变量。例如:

#
# -= One of my app configuration files =- 
#

string SERVER = "127.0.0.1";
string LANG = "{dynamic_value}";
string OTHERVAR = "{other_dynamic_value}";
是否可能有一个存储所有这些变量的外部配置文件

#
# -= My Docker centralised config file =- 
#

dynamic_value = "English";
other_dynamic_value = "North";
因此,添加到容器中的结果文件如下所示:

#
# -= One of my app configuration files =- 
#

string SERVER = "127.0.0.1";
string LANG = "English";
string OTHERVAR = "North";
谢谢

您可以使用env文件,也可以在启动容器时使用下面的命令调用它们

-e var='value'

您可以使用env文件,也可以在启动容器时使用下面的命令调用它们


-e var='value'

使用您选择的脚本语言(如ruby)创建脚本文件

require 'json'
myconfigfile = 'config1.json'
j= ''
File.open(myconfigfile, "r") do |f|
  j = JSON.parse(f.read)
end

File.open('appconfig.txt','w') do |f|
  f.write 'string SERVER = "127.0.0.1"' + "\n"
  f.write 'string LANG = ' + j['dynamic_value'].to_s + "\n"
  f.write 'string OTHERVAR = ' + j['other_dynamic_value'].to_s + "\n"
end

`docker build .`
在这个示例中,我假设您的集中式配置文件是json格式的

{
  "dynamic_value" : "English",
  "other_dynamic_value" : "North"
}

在Dockerfile中,将这样创建的appconfig.txt文件复制到容器中。

使用您选择的脚本语言(例如ruby)创建脚本文件

require 'json'
myconfigfile = 'config1.json'
j= ''
File.open(myconfigfile, "r") do |f|
  j = JSON.parse(f.read)
end

File.open('appconfig.txt','w') do |f|
  f.write 'string SERVER = "127.0.0.1"' + "\n"
  f.write 'string LANG = ' + j['dynamic_value'].to_s + "\n"
  f.write 'string OTHERVAR = ' + j['other_dynamic_value'].to_s + "\n"
end

`docker build .`
在这个示例中,我假设您的集中式配置文件是json格式的

{
  "dynamic_value" : "English",
  "other_dynamic_value" : "North"
}

在Dockerfile中,将这样创建的appconfig.txt文件复制到容器中。

尝试使用envfile@Kilian你能再多告诉我一点吗?在我的作品中,我在Docker文件中使用ENV,或者在run命令中使用--e。你可以在你的容器里使用它们。您可以在容器内的bash中使用“env”命令进行验证file@Kilian你能再多告诉我一点吗?在我的作品中,我在Docker文件中使用ENV,或者在run命令中使用--e。你可以在你的容器里使用它们。您可以在容器内的bash中使用“env”命令进行验证。