使用Docker时的Spring Boot外部configuration

我正在开发一个我想用Docker部署的Spring Boot应用程序。

我遇到的麻烦是我们需要将属性文件存储在服务器上,类似于Tomcat允许您将属性文件放在/ lib中。

如何让Spring Boot在Docker中运行时使用这个文件?

Docker提供了一种使用Volumes 来实现这一点的方法:

除了使用-v标志创build卷之外,还可以将自己的主机上的目录挂载到容器中。

$ sudo docker run -d -P --name yourapp -v /lib:/lib yourcontainer/name

所以在你的容器化的应用程序中,你只需要看看/ lib(或者你可以在任何方便的地方安装它),当你预定容器时,你需要指定你要装载的主机目录。

我使用的另一个选项是创build一个只有configuration的容器(使用busybox或者小的东西),然后从其中导出一个目录作为你在其他容器中共享的卷。 这确实会在您必须pipe理的容器之间build立一个依赖关系,但是它可以使您能够对您的configuration进行版本化,而不必让它只坐在主机文件系统上。

这两种策略都在上面的链接中讨论。

您也可以直接覆盖application.properties文件:

docker运行-v custom.properties:/data/application.properties spring-boot-app