Контейнеры в службах compose могут соединяться с другими контейнерами, используя имя, например, попробуйте проверить связь с контейнером базы данных из контейнера начальной загрузки.
Проверьте, можете ли вы пропинговать контейнер базы данных
docker-compose exec spring-boot-jpa-docker-webapp /bin/bash
когда вы находитесь в оболочке (возможно, вам придется установить ping в контейнере с загрузочной пружиной для тестирования только apt-get install iputils-ping
или yum install
в зависимости от того, на чем основан образ-контейнер)
ping docker-mysql
, если ping успешен, тогдаэто означает, что вы можете подключиться к базе данных
заменить URL базы данных в application.properties на
spring.datasource.url=jdbc:mysql://docker-mysql:3306/test?autoReconnect=true
Минимальный пример для Mysql
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- "./volumes/database:/var/lib/mysql"
Попробуйте следующий docker-compose
version: "3.7"
services:
docker-mysql:
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
volumes:
- "./volumes/database:/var/lib/mysql"
networks:
- spring_net
spring-boot-jpa-docker-webapp:
image: springboot_docker
ports:
- "8080:8080"
networks:
- spring_net
networks:
spring_net: