Docker Spring Boot сервисы не могут подключиться к контейнеру MySQL
Я использую Docker Compose для контейнеризации БД и микросервисов .
My docker-compose.yml
version: '3.7'
services:
mysqldb:
image: mysql:latest
container_name: mysqldb
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=cabDB
- MYSQL_USER=user
- MYSQL_PASSWORD=pass
volumes:
- mysqldb:/var/lib/mysql
restart: always
discovery-server:
image: discovery-server:latest
container_name: discovery-server
ports:
- "8761:8761"
environment:
- SPRING_PROFILES_ACTIVE=docker
restart: always
api-gateway:
image: api-gateway:latest
container_name: api-gateway
ports:
- "8080:8080"
expose:
- "8080"
environment:
- SPRING_PROFILES_ACTIVE=docker
- LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY=TRACE
depends_on:
- discovery-server
links:
- discovery-server
restart: always
payment-service:
container_name: payment-service
image: payment-service:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
depends_on:
- discovery-server
- api-gateway
- mysqldb
links:
- mysqldb
- discovery-server
restart: always
volumes:
mysqldb:
application.yml in payment-service
spring:
datasource:
url: ${MYSQL_JDBC_URL:jdbc:mysql://mysqldb:3306/cabDB?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false}
username: ${MYSQL_USERNAME:user}
password: ${MYSQL_PASSWORD:pass}
application:
name: PAYMENT-SERVICE
Если я запускаю docker compose up -d, я получаю эту ошибку во всех контейнерах, которые пытаются подключиться к mysqldb: Could not create connection to database server. Attempted reconnect 3 times. Giving up. Но если я захожу в контейнер mysqldb через Bash и авторизируюсь:
docker exec -it *mysql container id* bash
mysql -uuser -ppass
Все микросервисы сразу же корректно подключаются к БД.