Приложение Spring Boot не может подключиться к MySQL в Docker-ComposeMySql

Форум по Mysql
Ответить
Anonymous
 Приложение Spring Boot не может подключиться к MySQL в Docker-Compose

Сообщение Anonymous »

У меня есть приложение Spring Boot, которое отлично работает на моей локальной машине с MySQL. Теперь я пытаюсь контейрировать его, используя Docker Compose, но приложение не может подключиться к базе данных, когда я запускаю Docker-Compose Up .

my setup

Я имею следующие docker-compose.yml :
version: '3.9'

services:
book_service_db:
image: mysql:8.0
command: --default-authentication-plugin=caching_sha2_password
environment:
MYSQL_ROOT_PASSWORD: r0dRig$o!
MYSQL_DATABASE: book_service
MYSQL_USER: admin
MYSQL_PASSWORD: admin
ports:
- "3306:3306"
networks:
app_network:
ipv4_address: 172.20.0.2
container_name: book_service_db
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
retries: 10
start_period: 60s # Ensures MySQL is fully started before dependent services try to connect

book-service:
build:
context: ./../book-service
dockerfile: Dockerfile
ports:
- "8081:8080"
networks:
app_network:
ipv4_address: 172.20.0.5
depends_on:
book_service_db:
condition: service_healthy # Ensures book-service starts only when MySQL is ready
container_name: book_service
restart: always

networks:
app_network:
ipam:
config:
- subnet: 172.20.0.0/24
driver: bridge

my dockerfile для книжного обслуживания :

Код: Выделить всё

FROM openjdk:17-jdk-slim

WORKDIR /app

COPY /target/*.jar /app/app.jar

EXPOSE 8080

RUN apt-get update && apt-get install -y iputils-ping net-tools dnsutils default-mysql-client

ENTRYPOINT ["java", "-jar", "app.jar"]
и my application.properties содержит:

Код: Выделить всё

# Application details
spring.application.name=Book-Service
server.port=8082

# MySQL Configuration
spring.datasource.url=jdbc:mysql://book_service_db:3306/book_service?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.datasource.username=admin
spring.datasource.password=admin

# Hibernate Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.defer-datasource-initialization=true
spring.sql.init.mode=always
spring.sql.init.data-locations=classpath:data.sql

проблема

Когда я запускаю Docker-Compose Up , приложение не подключается к базе данных, и я получаю следующую ошибку:

Код: Выделить всё

2025-03-16 15:07:07 Error starting ApplicationContext.  To display the condition evaluation report re-run your application with 'debug' enabled.
.
.
.
2025-03-16 15:07:07 Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)
.
.
.
2025-03-16 15:07:07 Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)
< /code>
 что я попробовал < /h4>

[*]  i [b] can < /strong> успешно пинговать базу данных из контейнера приложения: < /p>
< /p>


Подробнее здесь: [url]https://stackoverflow.com/questions/79512701/spring-boot-app-fails-to-connect-to-mysql-in-docker-compose[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»