带有变量和包含文件的 Dockerfile 预处理器

带有变量和包含文件的 Dockerfile 预处理器

我已经将 docker 用于我的许多应用程序。我已经有大约十几个 dockerfile。我经常需要对许多 dockerfile 进行相同的更改或包含某些内容 - 这意味着我必须在多个地方进行相同的更改。

解决这个问题的可能方法是使用支持包含文件和变量的预处理器。这样,我就可以在同一个文件中包含通用内容(例如,包含 monit 和 monitor 的一堆内容),然后将这些文件包含到我的 Dockerfile 中。

Docker 构建本身不包含变量替换,所以也许预处理器可以解决这个问题?我知道对于 CSS 有很多预处理器,那么是否有通用预处理器或可以获取 YAML 或 JSON 文件并写下 Docker 可以理解的内容的东西?

答案1

这实际上是讨论主题在 Docker GitHub 中。结束语基本上可以总结为:“不,Dockerfile 不是也不应该是脚本语言”。

但是,您描述这种情况的方式在我看来就像您应该在构建之后做的事情,即在初始化您构建的映像的容器时(可能使用卷或环境变量以及一个不错的 shell 脚本)。您尝试过这种方法吗?

相关内容