Соединение docker-compose с mysql отказано

#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». Я не знаю, связано ли это с кэшем. Это так неловко.