【问题标题】:Micronaut not connecting to db in ymlMicronaut 未连接到 yml 中的数据库
【发布时间】:2023-03-10 18:01:01
【问题描述】:

我为我的应用程序创建了一个新环境并将其命名为 docker。我正在尝试一些东西,所以我这样设置:

application-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)

为什么它试图连接到本地主机?我错过了什么?

【问题讨论】:

    标签: postgresql micronaut micronaut-data


    【解决方案1】:

    似乎 Micronaut 无法找到 application-docker.yml 文件,然后它使用的是默认文件。

    因为您可以使用例如-Dmicronaut.environments=not-existing-profile,即使它不存在,它也不会显示任何错误。

    所以,请确保您在 src/main/resources 目录中有 application-docker.yml 文件,并且该文件在运行期间确实已导出到结果 jar 中build 并位于 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
    

    【讨论】:

    • 现在你已经把它摆出来了。真是太感谢你了!
    • 很高兴它对你有所帮助;-)
    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多