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

pass external config file to docker container at runtime

我有一个 scala sbt 应用程序并且有一个默认 application.conf。 我通过 docker 为 运行 这个应用程序构建了一个 docker 图像。 如何在 运行 次替换 docker 容器中的默认 application.conf

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

我建议不要传递带有覆盖的 application.conf 文件,而是使用基于环境变量的覆盖,原因如下:

  • 从部署工具的角度来看,使用配置文件安装卷可能很棘手;
  • 并非所有配置管理工具(例如 HashiCorp Consul)都提供 HOCON 支持,但管理环境变量几乎是一个标准。特别是如果它包含需要保护的秘密;

所以,您可以执行以下操作: 在您的应用程序 conf 设置中通过环境变量覆盖:

foo=default
foo={?FOO}

和运行应用程序docker具有特定覆盖的容器:

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

详情请看:

希望对您有所帮助!