在Dockerfile中parsing文件

是否有可能parsing构build上下文中的文件来收集信息? 例如,这样做会很好:

EXPOSE `cat config.conf | <more commands to get the port to expose>` 

configuration文件属于被容器化的应用程序,并且有一些端口必须是可configuration的,这也意味着它必须以某种方式从Dockerfile访问。

任何方式来完成这个?

如果你真的需要生成基于模板的Dockerfile,我认为有很多的模板工具,取决于你的主机平台。 任务Docker没有任何意义。 最简单的一个就是

 cfg_port = cat config.conf | grep ... | ... sed -e "s/CFG_PORTNUMBER/$cfg_port/g" /path/to/Docker_templatefile > /path/to/Dockerfile 

这就是说,

EXPOSE中EXPOSE只是一个提示。 它指示docker在目标容器中的容器链接期间设置环境variables – 请参见UserGuide:“环境variables”部分。

因此,确保基于某个模板的EXPOSE和每个端口configuration的结果分别是您真正需要的。 EXPOSE真的只是一个提示。

在大多数情况下,做这种事情更容易和更强大的方法是在创build容器时指定端口:

 docker run --expose=$cfg_port -ti myimage bash 

在大多数情况下,我build议不要创buildDockerfile。 相反,阅读并尝试与docker官方图像不同的run选项,直到你绝对确定为什么你需要自己的形象。 您只需要每个软件堆栈的独立映像,绝对需要在同一个容器中运行。

当然,看看docker-compose已经做到了你所需要的。