#docker #docker-compose
Вопрос:
моя среда разработки
- Пружинный ботинок 2.x, Gradle, Mybatis
Просто создайте с помощью Docker-составьте и создайте проект для тестирования API. Почему мне все время отказывают в подключении?
Если вы наберете команду «докер-составить», она запустится без каких-либо проблем.
Я проверил сеть, и она подключена.
Я обычно использую «docker exec A ping B» для проверки.
Я не знаю, почему возникает ошибка, когда A является контейнером БД. Я прикреплю код на всякий случай.
# application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://test-db:3306/exdocker?serverTimezone=Asia/Seoul
spring.datasource.username=dockerex
spring.datasource.password=12341234
# docker-compose.yml
version: "3"
services:
test-db:
container_name: test-db
image: mysql:8.0
environment:
MYSQL_DATABASE: "exdocker"
MYSQL_ROOT_PASSWORD: "root"
MYSQL_PASSWORD: "12341234"
MYSQL_USER: "dockerex"
restart: always
networks:
- exdocker-network
ports:
- 3307:3306
test-app:
links:
- test-db
build:
context: .
dockerfile: Dockerfile
ports:
- 8081:8080
restart: always
networks:
- exdocker-network
depends_on:
- test-db
networks:
exdocker-network:
ipam:
driver: default
config:
- subnet: 172.202.0.1/16
Комментарии:
1. В docker compose для доступа к другому контейнеру вам просто нужно использовать имя службы
2. вы проверили, работает ли mysql и работает ли он? может потребоваться некоторое время, прежде чем mysql сможет обрабатывать соединения. Также попробуйте использовать telnet (или nc) в контейнере приложения и протестируйте подключение к модулю mysql (что-то вроде
nc test-db 3306
и убедитесь, что сервер отвечает3. Я не знаю, что это такое, но я решил это с помощью команды «docker system prune». Я не знаю, связано ли это с кэшем. Это так неловко.