我正在使用Jhipster構建應用程序。 我的示例應用程序prod.yml看起來像下面由Jhipster使用Docker時Jhipster應用程序中的數據庫連接
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/MyModule?useUnicode=true&characterEncoding=utf8&useSSL=false
name:
username: hello
password: hello
hikari:
data-source-properties:
...
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
database: MYSQL
show-sql: false
org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
...
當我運行沒有搬運工,我得到一個MySQL錯誤,如果用戶名/密碼不正確,這是正常的應用程序提供。
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
但如果我正在使用泊塢窗圖像相同的應用程序,並提供在泊塢窗撰寫文件中的DB屬性,在應用程序prod.yml文件的屬性似乎被忽略。也就是說,即使應用程序屬性文件中的數據庫屬性不正確,但在Docker撰寫文件中提供了正確的值,應用程序在使用Docker鏡像運行時似乎也能正常工作,並且可以連接到數據庫。
在泊塢窗文件中的條目下面
version: '2'
services:
mymodule-mysql:
container_name: mymodule-mysql
image: mysql:5.7.13
environment:
- MYSQL_USER=root
- MYSQL_ROOT_PASSWORD=root
- MYSQL_ALLOW_EMPTY_PASSWORD=no
- MYSQL_DATABASE=mymodule
ports:
- 3306:3306
command: mysqld --lower_case_table_names=1 --skip-ssl
給出看來,在泊塢窗撰寫文件中的環境變量,重寫特性應用dev.yml文件。我的想法是否正確?
如果有人能夠詳細解釋這是如何在jspeter中工作的,那將會很好。
如果我理解正確,1)app.yml環境變量中的條目覆蓋application-prod.yml屬性。因此,application-prod.yml中的用戶名和密碼未被使用。 2)mysql.yml文件中的憑證用於啓動docker服務並提供root用戶憑證。那麼,應用程序使用默認的根ceredentials連接到數據庫? – Soumya
但是,如果我希望我的應用程序使用不同的證書集(不是根),我應該在哪裏提及它。我無法在application-prod.yml中提到它,因爲mysql屬性被覆蓋。在我的情況下,即使在application-prod.yml中提供了錯誤的用戶名/密碼,docker映像似乎也會啓動,這表明可能會使用mysql.yml的根證書。是這樣嗎 ? – Soumya
1)正確 2)正確 我不認爲你的應用程序正在使用默認的根憑證。可以說你的應用程序在開發模式下運行,它使用內存中的h2數據庫? – duderoot