简体   繁体   English

在运行时将外部配置文件传递给 docker 容器

[英]pass external config file to docker container at runtime

I have a scala sbt application and have a default application.conf.我有一个 scala sbt 应用程序并且有一个默认的 application.conf。 I built a docker image to run this application via docker.我构建了一个 docker 镜像来通过 docker 运行这个应用程序。 How can I replace the default application.conf in the docker container at a run time?如何在运行时替换 docker 容器中的默认application.conf

I'd recommend instead of passing application.conf file with overrides, go with overrides based on environment variables, because of reasons like:我建议不要通过覆盖传递application.conf文件,而是使用基于环境变量的覆盖,原因如下:

  • Mounting volume with configuration file might be tricky from deployment tools perspective;从部署工具的角度来看,使用配置文件挂载卷可能很棘手;
  • Not all configurations management tools (for instance HashiCorp Consul) provide HOCON support, but managing environment variables is almost a standard.并非所有配置管理工具(例如 HashiCorp Consul)都提供 HOCON 支持,但管理环境变量几乎是一个标准。 Especially if it contains secrets which needs to be protected;特别是如果它包含需要保护的秘密;

So, you can do next: In your application conf set overrides via environment variable:因此,您可以执行以下操作:在您的应用程序 conf 中通过环境变量设置覆盖:

foo=default
foo={?FOO}

And run application docker container with specific override:并使用特定覆盖运行应用程序 docker 容器:

docker run ...
 -e foo=bar \
 ...

Please, see for more details:请参阅以获取更多详细信息:

Hope this helps!希望这可以帮助!

docker run ... \ --volume=[[YOUR-HOST-PATH]]/application.conf:[[YOUR-IMAGE-PATH]]/application.conf ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM