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

vkt*_*vkt 8 scala docker sbt-native-packager dockerfile docker-compose

我有一个 scala sbt 应用程序,并且有一个默认的 application.conf。我构建了一个 docker 映像来通过 docker 运行此应用程序。如何application.conf在运行时替换 docker 容器中的默认值?

Iva*_*nko 7

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

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

因此,您可以执行下一步:在您的应用程序conf中通过环境变量设置覆盖:

foo=default
foo={?FOO}
Run Code Online (Sandbox Code Playgroud)

并使用特定覆盖运行应用程序 docker 容器:

docker run ...
 -e foo=bar \
 ...
Run Code Online (Sandbox Code Playgroud)

请参阅了解更多详情:

希望这可以帮助!