在Docker容器中自动配置Config

时间:2019-03-03 09:28:09

标签: docker docker-compose dockerfile

在设置和配置一些Docker容器时,我问自己如何在容器化服务完成安装后自动编辑容器内的一些配置文件。(因为配置文件是在安装时创建的)。

我尝试过使用shell文件并将其添加为entrypoint中的Dockerfile。但是,正如我所说的,配置文件一开始就不存在,因此脚本中的sed命令失败。

- ./myConfig.conf:/xy/myConfig.conf链接配置文件也是不可行的,因为该配置包含一些依赖于安装的选项。

我最found的最合理的解决方案是运行脚本,该脚本在安装完成后docker exec -i mycontainer sh < editconfig.sh手动编辑配置。

编辑

我的问题是概括性的。但是,在与Nextcloud类似的docker-compose设置中使用official example时出现了问题。该容器包含一个config.php文件,它是Nextcloud的常规配置文件,是在安装过程中生成的。该文件的某些属性必须更改(只能指定非常有限数量的环境变量)。由于我正在对该容器进行一些测试,因此我必须反复重新安装它,然后重新编辑配置文件。

2 个答案:

答案 0 :(得分:1)

也许您可以尝试另一种方法,并让您的配置文件/应用程序从环境变量中选择其设置。这将与12factor应用程序方法see here

一致

答案 1 :(得分:0)

我如何理解您的情况,您需要从某个模板创建配置开始启动容器。

我看到很多选择可以做到这一点:

  1. 使用一些脚本,该脚本根据模板和命令行或环境变量的参数生成配置。 (例如Jinja2 and pythonMustache and node.js)。在这种情况下,您的入口点将在此启动应用程序之后生成模板。对于更改配置,将强制您重新启动服务(容器)。

  2. 运行某些服务可以保存配置并在运行时呈现您的配置。就个人而言,我喜欢consul template,我们在我们的环境中积极使用此引擎,并且暂时没有问题。在这种情况下,配置更具动态性,并且可以“即时”更改。在您的容器中,您将有两个进程,即应用程序和consul-template守护程序。显然,您将需要运行并维护领事。对于重新加载配置,重新启动应用程序进程就足够了。

  3. 运行自定义脚本以创建配置。 :)