Spring 使用 Docker 时启动外部配置
Spring Boot External Configuration when using Docker
我正在开发一个 Spring 启动应用程序,我想用 Docker 部署它。
我遇到的问题是我们需要将属性文件存储在服务器上,类似于 Tomcat 允许您将属性文件放在 /lib 中的方式。
当 运行 在 Docker 中时,我将如何让 Spring 启动以使用此文件?
Docker 使用 Volumes:
提供 a way to do this
In addition to creating a volume using the -v flag you can also mount a directory from your own host into a container.
$ sudo docker run -d -P --name yourapp -v /lib:/lib yourcontainer/name
因此,在您的容器化应用程序中,您只需查看 /lib(或您认为方便挂载它的任何地方),并在预订容器时指定要挂载的主机目录。
我使用的另一个选项是创建一个仅包含配置的容器(使用 busybox 或其他小东西),然后从其中导出一个目录作为您在其他容器中共享的卷。这确实在您必须管理的容器之间建立了依赖关系,但它给您带来的好处是能够对您的配置进行版本控制,而不必将其放在主机文件系统上。
以上 link 中讨论了这两种策略。
您也可以直接覆盖 application.properties 文件:
docker 运行 -v custom.properties:/data/application.properties spring-boot-app
我正在开发一个 Spring 启动应用程序,我想用 Docker 部署它。
我遇到的问题是我们需要将属性文件存储在服务器上,类似于 Tomcat 允许您将属性文件放在 /lib 中的方式。
当 运行 在 Docker 中时,我将如何让 Spring 启动以使用此文件?
Docker 使用 Volumes:
提供 a way to do thisIn addition to creating a volume using the -v flag you can also mount a directory from your own host into a container.
$ sudo docker run -d -P --name yourapp -v /lib:/lib yourcontainer/name
因此,在您的容器化应用程序中,您只需查看 /lib(或您认为方便挂载它的任何地方),并在预订容器时指定要挂载的主机目录。
我使用的另一个选项是创建一个仅包含配置的容器(使用 busybox 或其他小东西),然后从其中导出一个目录作为您在其他容器中共享的卷。这确实在您必须管理的容器之间建立了依赖关系,但它给您带来的好处是能够对您的配置进行版本控制,而不必将其放在主机文件系统上。
以上 link 中讨论了这两种策略。
您也可以直接覆盖 application.properties 文件:
docker 运行 -v custom.properties:/data/application.properties spring-boot-app