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

时间:2018-02-14 15:08:50

标签: 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 =- 
#

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";

谢谢

2 个答案:

答案 0 :(得分:2)

https://docs.docker.com/compose/env-file/

您可以使用env文件,也可以在启动容器时使用以下内容调用它们。

-e var ='value'

答案 1 :(得分:1)

使用您选择的脚本语言创建脚本文件,例如红宝石。

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文件复制到容器中。