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"]
Код: Выделить всё
# 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]
Мобильная версия