Micronaut 未连接到 yml 中的数据库
Micronaut not connecting to db in yml
我为我的应用程序创建了一个新环境并将其命名为 docker。我正在尝试一些东西,所以我这样设置:
申请-docker.yml
micronaut:
application:
name: time
server:
netty:
access-logger:
enabled: true
logger-name: access-logger
datasources:
default:
url: jdbc:postgresql://db:5432/postgres
driverClassName: org.postgresql.Driver
username: postgres
password: postgres
schema-generate: CREATE_DROP
dialect: POSTGRES
schema: time
jpa.default.properties.hibernate.hbm2ddl.auto: update
flyway:
datasources:
default:
enabled: true
schemas: time
...
然而,当我尝试 运行 我的应用时:
java -jar target/timeshare-0.1.jar -Dmicronaut.environments=docker -Dcom.sun.management.jmxremote -Xmx128m
如果失败...因为它无法连接到本地主机!
08:11:00.949 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
08:11:02.013 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:285)
为什么要尝试连接到本地主机?我错过了什么?
Micronaut 似乎无法找到 application-docker.yml 文件,然后它使用默认文件。
因为你可以使用例如-Dmicronaut.environments=not-existing-profile
,即使它不存在,它也不会显示任何错误。
因此,请确保 application-docker.yml 文件位于 src/main/resources 目录中,并且该文件在构建期间真正导出到结果 jar 中,位于 jar 存档的根目录中:
target/timeshare-0.1-all.jar
├── com
├── META-INF
├── org
├── application-docker.yml
├── application.yml
├── logback.xml
...
您如何构建结果 jar?当您使用 shadowJar 任务时,它必须包含所有内容。
另一种选择是使用MICRONAUT_ENVIRONMENTS
系统变量:
export MICRONAUT_ENVIRONMENTS=docker
但这与 -Dmicronaut.environments=docker
启动选项的行为相同。
另一个选项是通过 micronaut.config.files
启动选项指定 application-docker.yml 配置文件的确切路径:
java -jar target/timeshare-0.1-all.jar -Dmicronaut.config.files=/some/external/location/application-docker.yml
我为我的应用程序创建了一个新环境并将其命名为 docker。我正在尝试一些东西,所以我这样设置:
申请-docker.yml
micronaut:
application:
name: time
server:
netty:
access-logger:
enabled: true
logger-name: access-logger
datasources:
default:
url: jdbc:postgresql://db:5432/postgres
driverClassName: org.postgresql.Driver
username: postgres
password: postgres
schema-generate: CREATE_DROP
dialect: POSTGRES
schema: time
jpa.default.properties.hibernate.hbm2ddl.auto: update
flyway:
datasources:
default:
enabled: true
schemas: time
...
然而,当我尝试 运行 我的应用时:
java -jar target/timeshare-0.1.jar -Dmicronaut.environments=docker -Dcom.sun.management.jmxremote -Xmx128m
如果失败...因为它无法连接到本地主机!
08:11:00.949 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
08:11:02.013 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:285)
为什么要尝试连接到本地主机?我错过了什么?
Micronaut 似乎无法找到 application-docker.yml 文件,然后它使用默认文件。
因为你可以使用例如-Dmicronaut.environments=not-existing-profile
,即使它不存在,它也不会显示任何错误。
因此,请确保 application-docker.yml 文件位于 src/main/resources 目录中,并且该文件在构建期间真正导出到结果 jar 中,位于 jar 存档的根目录中:
target/timeshare-0.1-all.jar
├── com
├── META-INF
├── org
├── application-docker.yml
├── application.yml
├── logback.xml
...
您如何构建结果 jar?当您使用 shadowJar 任务时,它必须包含所有内容。
另一种选择是使用MICRONAUT_ENVIRONMENTS
系统变量:
export MICRONAUT_ENVIRONMENTS=docker
但这与 -Dmicronaut.environments=docker
启动选项的行为相同。
另一个选项是通过 micronaut.config.files
启动选项指定 application-docker.yml 配置文件的确切路径:
java -jar target/timeshare-0.1-all.jar -Dmicronaut.config.files=/some/external/location/application-docker.yml