Ошибка при запуске Java Spring Boot проекта на Docker. Exception during pool initialization
Имеется сервер ubuntu с установленным Docker. Есть проект (React, Java Spring). При docker-compose up в логах появляется следующая ошибка:
2022-08-31 11:23:30,516 ERROR com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
docker-compose.yml:
version: '3'
services:
nginx-server:
restart: always
container_name: 'nginx-server'
image: 'hermanvfx/nginx:latest'
depends_on:
- front_app
ports:
- '80:80'
front_app:
container_name: 'project-avito4_1_front'
image: 'hermanvfx/avito4_1_front:latest'
# ports:
# - '3000:3000'
mysql:
container_name: 'mysql-image'
image: 'hermanvfx/mysql:latest'
environment:
- 'MYSQL_ROOT_PASSWORD=root'
- 'MYSQL_DATABASE=platform'
app:
container_name: 'project-avito4_1_back'
image: 'hermanvfx/avito4_1_app:latest'
depends_on:
- mysql
ports:
- '8888:8888'
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-image:3306/platform?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- SPRING_DATASOURCE_PLATFORM=org.hibernate.dialect.MySQL8Dialect
application.properties:
server.port=8888
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/platform?characterEncoding=UTF-8&useUnicode=true&\
useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
Ответы (1 шт):
Автор решения: Vladimir
→ Ссылка
Роман был прав. Приложение стартовало раньше базы данных. Помогло редактирование docker-compose.yml. Для приложения:
depends_on:
mysql:
condition: service_healthy
для mysql:
healthcheck:
test: "mysql -uroot -proot platform -e 'select 1'"
interval: 1s
retries: 120
Так же в в логах было: mysql Operation not permitted. Помогла следующая строчка для mysql:
cap_add:
- SYS_NICE
docker-compose.yml целиком:
version: '3.7'
services:
nginx-server:
restart: always
container_name: 'nginx-server'
image: 'hermanvfx/nginx:latest'
depends_on:
- front_app
ports:
- '80:80'
front_app:
container_name: 'project-avito4_1_front'
image: 'hermanvfx/avito4_1_front:latest'
# ports:
# - '3000:3000'
mysql:
container_name: 'mysql-image'
image: 'hermanvfx/mysql:latest'
environment:
- 'MYSQL_ROOT_PASSWORD=root'
- 'MYSQL_DATABASE=platform'
healthcheck:
test: "mysql -uroot -proot platform -e 'select 1'"
interval: 1s
retries: 120
cap_add:
- SYS_NICE
app:
container_name: 'project-avito4_1_back'
image: 'hermanvfx/avito4_1_app:latest'
ports:
- '8888:8888'
depends_on:
mysql:
condition: service_healthy
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-image:3306/platform?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- SPRING_DATASOURCE_PLATFORM=org.hibernate.dialect.MySQL8Dialect
Так же в файле docker-compose.yml изменил версию 3 на 3.7. На сервере переустановил docker-compose v1.26 на docker-compose v2.10.2
