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

Ani*_*ith 5 scripting docker

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

可能解决此问题的方法是使用支持包含文件和变量的预处理器。这样我就可以在同一个文件中包含常见的东西(例如,包含 monit 和 supervisor 的一堆东西),并将这些文件包含在我的 Dockerfile 中。

Docker 构建本身不包括和变量替换,所以也许预处理器可以解决问题?我知道对于 CSS 有一堆预处理器,那么是否有一个通用的预处理器或一些可以使用 YAML 或 JSON 文件并写下 Docker 可以理解的东西的东西?

小智 1

这实际上是Docker GitHub 上讨论的一个话题。结束语几乎可以概括为:“不,Dockerfile 不是也不应该是一种脚本语言”。

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