如何从docker命令行设置参数以配置Spring Boot应用程序?

Rys*_*Rys 4 java spring docker spring-boot

我有一个带有yml的spring boot应用程序,以在docker容器中配置它。像这样:

 spring:   application:
   name: micro-example
   config:
     uri: ${vcap.services.config-service.credentials.uri:http://xxx.xxx.xx.73:8888}
Run Code Online (Sandbox Code Playgroud)

如您所见,在我的配置中有一个ip硬编码,这是一个坏主意,因为该合并仅用于服务器。是否存在将ip外部化或从docker命令行或更好的主意进行设置的方法?

Sla*_*hin 5

有很多不同的方法可以做到:

1)设置环境变量(export VCAP_SERVICES_CONFIG-SERVICE_CREDENTIALS_URI='http://example.com'在shell中或ENV内部使用Dockerfile

2)将其作为JVM参数(java -Dvcap.services.config-service.credentials.uri=http://example.com -jar app.jar)传递

3)作为命令行参数(java -jar app.jar --vcap.services.config-service.credentials.uri=http://example.com)传递

4)Spring Boot还会从与可执行JAR文件相同的目录中读取config/application.propertiesapplication.properties位于同一目录中的值,因此可以提供此文件(您可以使用该文件VOLUME)并覆盖JAR中的设置

另请参阅:http : //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html