docker-compose – 外部化spring application.properties

我有一个弹簧启动应用程序,连接到mongo数据库,并与泊坞窗部署应用程序。 我正在使用这个docker-compose.yml文件,它工作正常:

version: '2' services: db: container_name: app-db image: mongo volumes: - /data/db:/data/db ports: - 27017:27017 web: container_name: spring-app image: spring-app depends_on: - db environment: SPRING_DATA_MONGODB_URI: mongodb://db:27017/appDB SPRING_DATA_MONGODB_HOST: db ports: - 8080:8080 

目前,该应用程序正在使用embedded在Spring应用程序泊坞窗图像(spring-app)中的application.properties文件。 如何使用docker-compose外部化/传入application.properties文件?

感谢您的帮助

您必须根据您的要求使用Spring Profiles来定义环境variables。

 server: port: 9000 --- spring: profiles: development server: port: 9001 --- spring: profiles: production server: port: 0 

参考: https : //docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-change-configuration-depending-on-the-environment

您可以定义在运行期间需要select哪个configuration文件。

 version: '2' services: db: container_name: app-db image: mongo volumes: - /data/db:/data/db ports: - 27017:27017 web: container_name: spring-app image: spring-app depends_on: - db environment: SPRING_DATA_MONGODB_URI: mongodb://db:27017/appDB SPRING_DATA_MONGODB_HOST: db SPRING_PROFILES_ACTIVE=development ports: - 8080:8080 

但是这将需要你重build泊坞窗图像,如果有一个不理想的configuration变化。 Spring Cloud Config(Vault)派上用场,帮助您将configuration外化。

http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.0.RELEASE/