У меня есть весеннее загрузочное приложение, которое подключается к базе данных mysql.Если я запускаю его локально классическим способом, он работает нормально.Но когда я пытаюсь сделать dockerise это - база данных запускается успешно, но приложение не видит БД.
Мой Dockerfile:
FROM openjdk:11-jdk-slim
ADD start-local.sh /start-local.sh
RUN chmod +x start-local.sh
ENTRYPOINT [ "sh", "-c", "./start-local.sh" ]
Мой start-local.sh (я добавил его, чтобы мое приложение ожидало запуска базы данных):
#!/bin/sh
echo "Waiting for the database server to start"
echo "********************************************************"
apt-get update && apt-get install -y netcat
while ! nc -z mysql 3306; do sleep 3; done
echo "******** Database Server has started"
echo "Starting account service"
java -jar /mnt/service-2.4.0.jar
И, наконец, мойФайл docker-compose.yml:
version: '2'
services:
mysql:
image: mysql:5.7.23
environment:
- MYSQL_ROOT_PASSWORD=root
entrypoint:
sh -c "echo 'CREATE DATABASE IF NOT EXISTS books; CREATE DATABASE IF NOT EXISTS notifications' > /docker-entrypoint-initdb.d/init.sql;/usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql_mode="""
ports:
- "3306:3306"
account_app:
image: service_img
environment:
- "SPRING_PROFILES_ACTIVE=local"
ports:
- "8083:8083"
volumes:
- "/build/libs/:/mnt"
Что я выполняю:
- Прежде всего, я создаю свой service_img
- , затем выполняю docker-compose up,В журналах я вижу журналы запуска базы данных, после журналов запуска моего приложения и ошибки:
|2019-09-23 09: 51: 14.006 DEBUG [account-service ,,,] 286 --- [
main] cmlccdpDatasourceConfiguration: создание источника данных
account_app_1 |2019-09-23 09: 51: 14.014 ИНФО [account-service ,,,] 286 --- [main] com.zaxxer.hikari.HikariDataSource: HikariPool-1 - Starting ... account_app_1 |2019-09-23 09: 51: 15.222 ОШИБКА [account-service ,,,] 286 --- [main] com.zaxxer.hikari.pool.HikariPool: HikariPool-1 - исключение при инициализации пула.account_app_1 |account_app_1 |com.mysql.cj.jdbc.exceptions.CommunicationsException: сбой линии связи account_app_1 |account_app_1 |Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад.Драйвер не получил никаких пакетов с сервера.account_app_1 |в com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException (SQLError.java:174) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException (SQLExceptionsMapping.java:64) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:835) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl. (ConnectionImpl.java:455) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:240) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |at com.mysql.cj.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:199) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] Последний пакет, успешно отправленный на сервер, был 0 миллисекундтому назад.Драйвер не получил никаких пакетов с сервера.account_app_1 |в com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException (SQLError.java:174) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException (SQLExceptionsMapping.java:64) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:835) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl. (ConnectionImpl.java:455) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:240) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:199) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |на com.zaxxer.hikari.util.DriverDataSource.getConnection (DriverDataSource.java:136) ~ [HikariCP-3.2.0.jar! /: na] account_app_1 |at com.zaxxer.hikari.pool.PoolBase.newConnection (PoolBase.java:369) ~ [HikariCP-3.2.0.jar! /: na] account_app_1 |at com.zaxxer.hikari.pool.PoolBase.newPoolEntry (PoolBase.java:198) ~ [HikariCP-3.2.0.jar! /: na] account_app_1 |в com.zaxxer.hikari.pool.HikariPool.createPoolEntry (HikariPool.java:467)~ [HikariCP-3.2.0.jar! /: Na] account_app_1 |at com.zaxxer.hikari.pool.HikariPool.checkFailFast (HikariPool.java:541) ~ [HikariCP-3.2.0.jar! /: na] account_app_1 |... 206 общих кадров опущено account_app_1 |Вызывается: com.mysql.cj.exceptions.CJCommunicationsException: сбой линии связи account_app_1 |account_app_1 |Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад.Драйвер не получил никаких пакетов с сервера.account_app_1 |в java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) ~ [na: na] account_app_1 |в java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) ~ [na: na] account_app_1 |в java.base / jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) ~ [na: na] account_app_1 |в java.base / java.lang.reflect.Constructor.newInstance (Constructor.java:490) ~ [na: na] account_app_1 |в com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:61) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:105) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:151) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException (ExceptionFactory.java:167) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.protocol.a.NativeSocketConnection.connect (NativeSocketConnection.java:91) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |at com.mysql.cj.NativeSession.connect (NativeSession.java:152) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java:955) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:825) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |
... 214 общих кадровопущено account_app_1 |Вызвано: java.net.ConnectException: соединение отклонено (соединение отклонено) account_app_1 |в java.base / java.net.PlainSocketImpl.socketConnect (собственный метод) ~ [na: na] account_app_1 |в java.base / java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:399) ~ [na: na] account_app_1 |в java.base / java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:242) ~ [na: na] account_app_1 |в java.base / java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:224) ~ [na: na] account_app_1 |в java.base / java.net.SocksSocketImpl.connect (SocksSocketImpl.java:403) ~ [na: na] account_app_1 |в java.base / java.net.Socket.connect (Socket.java:591) ~ [na: na] account_app_1 |в com.mysql.cj.protocol.StandardSocketFactory.connect (StandardSocketFactory.java:155) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |в com.mysql.cj.protocol.a.NativeSocketConnection.connect (NativeSocketConnection.java:65) ~ [mysql-connector-java-8.0.15.jar! /: 8.0.15] account_app_1 |
... 217общие рамки пропущены account_app_1 |
Есть предложения?