2017-02-20 157 views
1

Так что мое application.properties будет выглядеть так:Как хранить значения application.properites, используя manifest.yml для хранения паролей?

spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydb 
spring.datasource.username=user 
spring.datasource.password=123456 
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect 

Я не хочу, чтобы другие, чтобы иметь возможность видеть мое имя пользователя и пароль, когда они идут в мой файл application.properties.

Есть ли альтернативный способ продвижения ценностей в литейный комплекс? Что-то вроде manifest.yml?

Попытка создать manifest.yml

Я попытался сделать файл манифеста, так что я могу связать его с моим приложением на облаке литейного производства.

VCAP_SERVICES = 
{ 
    "oraclesql": [ 
    { 
     "name": "OrcaleDb", 
     "label": "oraclesql", 
     "tags": [ 
     "oracledb", 
     "oracle", 
     "relational" 
     ], 
     "plan": "free", 
     "credentials": { 
     "uri": "jdbc:sqlserver://localhost:1433;databaseName=mydb", 
     "username": "user", 
     "password": "123456"   
     } 
    } 
    ] 
} 

Создано application.yml

//this works 
    spring: 
     application: 
      name: tester 
     datasource: 
      driverClassName: jdbc:sqlserver://localhost:1433;databaseName=mydb 
      username: user 
      password: 123456 
      initialize: false 
     jpa: 
      databasePlatform: org.hiberate.dialect.Oracle10gDialect 
+0

Возможный дубликат [Spring Boot как скрыть пароли в файле свойств] (http://stackoverflow.com/questions/37404703/spring-boot-how-to-hide-passwords-in-properties-file) –

+0

Если вы просто хотите, чтобы они отсутствовали из application.properties, взгляните на документы по экстернализации конфигурации для Spring Boot -> https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features- внешний config.html. Опция, которая хорошо работает с CF, - это установить переменные среды. Вы можете установить их через манифест.yml тоже. –

+0

Можете ли вы предоставить мне ссылку о том, как установить их через manifest.yml? @DanielMikusa Вот что я хочу делать. Переключитесь с app.properties на манифест. – Jesse

ответ

2

Да и нет. К сожалению, manifest.yml не работает совсем так. Файл содержит настройки, которые будут использоваться для cf push. Это приложение агностик и ничего не знает о Spring, Java, вашем языке программирования или вашей выборке приложений. Таким образом, он не может вносить изменения в ваш файл application.properties или другую конфигурацию, связанную с картой.

К счастью, существует множество способов настройки Spring Boot (см. here), а один из них - через переменные среды. Что повезло в том, что вы можете установить переменные окружения через manifest.yml. Таким образом, если вы установите правильные переменные среды в manifest.yml, вы можете настроить свое приложение.

Для справки, здесь приведены инструкции по установке переменных env в manifest.yml.

https://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#env-block

Это выглядит примерно так:

--- 
    ... 
    env: 
    ENV_1: val_1 
    ENV_2: val_2 

Spring загрузка будет отображать переменные окружения свойств, используя правила объяснены here. Основным примером будет SPRING_DATASOURCE_USERNAME карт до spring.datasource.username в application.properties.

+0

С manifest.yml мой пароль будет жестко закодирован как ENV, и значение будет передано в application.properies, правильно? – Jesse

+0

Да. Он не прошел, хотя и настолько, что он переопределяет то, что установлено в application.properties. Если у вас есть переменная env_1 env, она переопределит env.1 в файле свойств. Посмотрите документацию Spring Boot (ссылка в моем сообщении) для порядка этих переопределений. –

+0

Как я могу переписать это как manifest.yml службы VCap? Я отправил свою попытку, похоже, не работает. – Jesse

0

Что вы на самом деле хотите сделать здесь, это подключение к базе данных как облачный литейный цех service, а не определенный в вашем application.properties. Как говорит Дэниел, Spring может подбирать переменные ENV, но установка деталей соединения в манифесте не является идиоматическим способом сделать это.

Имея услугу, данные о соединении хранятся в переменной VCAP_SERVICES при привязке к приложению - пружина может считываться оттуда. Приложение spring-music показывает прототип этого способа.

 Смежные вопросы

  • Нет связанных вопросов^_^