【发布时间】:2016-11-27 01:22:12
【问题描述】:
我正在使用 Jhipster 构建一个应用程序。 我的示例 application-prod.yml 如下所示,由 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
...
当我在没有 docker 的情况下运行应用程序时,如果用户名/密码不正确,我会收到一个 mysql 错误,这是正常的。
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
但是,如果我使用 docker 映像运行相同的应用程序并在 docker compose 文件中提供 db 属性,则 application-prod.yml 文件中的属性似乎会被忽略。也就是说,即使应用程序属性文件中的数据库属性不正确,但 docker compose 文件中提供了正确的值,应用程序在使用 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
似乎 docker compose 文件中的环境变量覆盖了属性 application-dev.yml 文件。我的想法对吗?
如果有人能详细解释它在 jhipster 中的工作原理,那就太好了。
【问题讨论】:
标签: jhipster