Запуск postgres docker изнутри файла jar завершился неудачно - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть приложение java, которое локально работает нормально, но не работает, когда упаковано в jar-файл.

Приложение выполняет следующие шаги

  • Приложение запускает docker с использованием ProcessBuilder. Контейнер обрабатывает некоторые файлы
  • Приложение ожидает завершения работы этого контейнера и продолжает
  • Приложение запускает второй postgresql контейнер в фоновом режиме и монтирует в него папку с помощью Process Builder
  • Приложение ждет в течение 5 секунд, просто чтобы быть в безопасности.
  • Приложение делает некоторые логи c и выключает все.

Это прекрасно работает, когда я запустил приложение внутри IDE (InteliJ), но когда я пытаюсь запустить его с помощью jar-файла, я получаю эту ошибку

2020-04-22 17:42:12.342  INFO 22205 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-04-22 17:42:12.344 ERROR 22205 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute ApplicationRunner
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:778) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:765) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        at com.parser.AddressFinderApplication.main(AddressFinderApplication.java:10) ~[classes!/:0.0.1-SNAPSHOT]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[dataparser-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[dataparser-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) ~[dataparser-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) ~[dataparser-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: The connection attempt failed.
        at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:589) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:575) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[HikariCP-3.4.2.jar!/:na]
        at com.parser.database.DatabaseConnection.getDataSource(DatabaseConnection.java:42) ~[classes!/:0.0.1-SNAPSHOT]
        at com.parser.MainExport.readAddressesFromDatabase(MainExport.java:150) ~[classes!/:0.0.1-SNAPSHOT]
        at com.parser.MainExport.run(MainExport.java:58) ~[classes!/:0.0.1-SNAPSHOT]
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:775) ~[spring-boot-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
        ... 13 common frames omitted
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
        at org.postgresql.Driver$ConnectThread.getResult(Driver.java:410) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.Driver.connect(Driver.java:268) ~[postgresql-42.2.11.jar!/:42.2.11]
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677) ~[java.sql:na]
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) ~[java.sql:na]
        at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:98) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:83) ~[postgresql-42.2.11.jar!/:42.2.11]
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473) ~[HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554) ~[HikariCP-3.4.2.jar!/:na]
        ... 19 common frames omitted
Caused by: java.io.EOFException: null
        at org.postgresql.core.PGStream.receiveChar(PGStream.java:372) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:416) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:140) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:211) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.Driver.makeConnection(Driver.java:459) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.Driver.access$100(Driver.java:58) ~[postgresql-42.2.11.jar!/:42.2.11]
        at org.postgresql.Driver$ConnectThread.run(Driver.java:369) ~[postgresql-42.2.11.jar!/:42.2.11]
        at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

Я понимаю, что это странный сценарий, зачем отправлять команду docker run изнутри файла jar , Но у меня нет других вариантов.

Если кто-нибудь сталкивался с этим типом проблемы, любая информация будет оценена.
Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Как настроено соединение с вашей базой данных?

Может случиться, что ваша база данных недоступна изнутри контейнера

ищите extra_host в документации * docker, вы можете быть в состоянии добавить что-то вроде:

extra_hosts:
      - "db_host:<your local ip, dont use 127.0.0.1 or localhost>"

, а затем в приложении весенней загрузки настройте свои конфигурации Spring, укажите хост базы данных на db_host вместо 127.0.0.1 или что-либо еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...