Micronaut не подключается к базе данных в yml

Я создал новую среду для своего приложения и назвал ее докером. Я пробую что-то, поэтому я установил это так:

приложение-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

В случае неудачи ... потому что он не может подключиться к localhost!

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)

Почему он пытается подключиться к localhost? Что мне не хватает?


person coconut    schedule 07.10.2020    source источник


Ответы (1)


Похоже, что 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
...

Как вы строите банку результатов? Когда вы используете задачу shadowJar, она должна содержать все.


Другой вариант - использовать системную переменную MICRONAUT_ENVIRONMENTS:

export MICRONAUT_ENVIRONMENTS=docker

Но ведет себя так же, как и опция запуска -Dmicronaut.environments=docker.


Другой вариант - указать точный путь к файлу конфигурации application-docker.yml с помощью параметра запуска micronaut.config.files:

java -jar target/timeshare-0.1-all.jar -Dmicronaut.config.files=/some/external/location/application-docker.yml
person cgrim    schedule 07.10.2020
comment
Теперь это так очевидно, что вы это изложили. Я не могу тебя отблагодарить! - person coconut; 07.10.2020
comment
Рад, что тебе помогли ;-) - person cgrim; 07.10.2020