我正在使用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