Соединение отказано (Соединение отклонено) при попытке соединения между контейнерами Docker - PullRequest
0 голосов
/ 05 июня 2019

Попытка установить соединение между контейнером приложения и контейнером mysql в localhost, исключение при получении соединения

Мы используем докер-подход для вызова остальных API-сервисов, чтобы использовать микросервисный подход. Мы устанавливаем связь между контейнером приложения и контейнером mysql. При этом мы создали файл docker-compose, который создал контейнер mysql и контейнер приложения, открыв порты для обоих контейнеров. Ниже приведена команда для запуска docker-compose file docker-compose up.

файл docker-compose.yml

version: '3'

услуги: докер-MySQL: изображение: mysql: последние имя_ контейнера: MySQL-сервер среда: - MYSQL_ROOT_PASSWORD = abc123 - MYSQL_DATABASE = fitapp - MYSQL_PASSWORD = root порты: - 3307: 3306

spring-webap:
    build:
        dockerfile: Dockerfile
        context: .
    image: fitapp:1.0
    depends_on:
      - docker-mysql
    ports:
      - 8092:8080


spring-webap_1  | Caused by: java.net.ConnectException: Connection refused

1 Ответ

1 голос
/ 05 июня 2019

Из того, что я мог видеть ниже, будет ваш docker-compose.yml (изменил пароль для лучшего понимания)

version: '3'
services:
  docker-mysql:
    image: mysql
    ports:
        - "3301:3306"
    environment:
        - MYSQL_USER=root
        - MYSQL_DATABASE=fitapp
        - MYSQL_ROOT_PASSWORD=pass
        - MYSQL_PASSWORD=pass
  spring-webap:
    build:
      dockerfile: Dockerfile
      context: .
    image: fitapp:1.0
    depends_on:
      - docker-mysql
    ports:
      - 8092:8080

Spring application.properties / application.yml должен быть похож на ниже

    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://docker-mysql:3301/fitapp
    username: root
    password: pass

Убедитесь, что, если вы указали localhost в URL, он не будет работать, поскольку службы MySql и Spring работают в другом контейнере. Он должен быть связан или находиться в одной сети

...