Java 将application.properties外部化到docker env

Java 将application.properties外部化到docker env,java,docker,spring-boot,ldap,openldap,Java,Docker,Spring Boot,Ldap,Openldap,我正在使用spring boot和Docker开发一个应用程序。出于安全原因,我不想再使用application.properties,只使用environnement变量 如果您有最佳实践,我将不胜感激 这是我的docker-compose.yml的剪贴画 version: "2.1" services: app_users: image: images/app_users container_name: app_user_ctn build: contex

我正在使用spring boot和Docker开发一个应用程序。出于安全原因,我不想再使用application.properties,只使用environnement变量

如果您有最佳实践,我将不胜感激

这是我的docker-compose.yml的剪贴画

version: "2.1"
services:
app_users:
    image: images/app_users
    container_name: app_user_ctn
    build:
      context: ../..
      dockerfile: docker/dev/Dockerfile
    ports:
      - "30333:8080"
    external_links:
      - mysql
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql/myDB?autoReconnect=true
      SPRING_DATASOURCE_USERNAME: mysqluser1
      SPRING_DATASOURCE_PASSWORD: mysqlpwsword
      SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
      LDAP_PASSWORD: ldapPswd
      LDAP_URLS: ldap://myServer:389
      LDAP_USERNAME: cn=admin,dc=com,dc=expl
当我向ldap发出请求时,会收到NulPointerException,因为ldap环境变量未初始化。
当我使用application.yml时,它可以工作

...
spring:
  ldap:
      password: ldapPswd
      urls: ldap://myServer:389
      username: cn=admin,dc=com,dc=expl
 ....
你有什么想法吗


致以最诚挚的问候

LDAP\u密码
!=
spring.ldap.password
。您应该使用
SPRING\u LDAP\u PASSWORD
。谢谢@M.Deinum it works您可以为SPRING引导使用1个env变量,将您的应用程序属性定义为json,所有这些都应该在box@pandaadb谢谢,但我不明白你想干什么mean@Victor您可以在这里阅读:
可以在上提供SPRING\u应用程序\u JSON属性带有环境变量的命令行。例如,在UN*X shell中:$SPRING\u APPLICATION\u JSON='{“foo”:{“bar”:“spam”}'java-jar myapp.jar
。我的理解是,您可以使用上述变量以json格式定义所有属性,这样您就不必在docker文件中指定X个变量。这只是个人喜好