2016-08-15 6 views
1

Issue DetailНе удается подключиться к mysql через приложение java в докере?

  1. У меня есть приложение Java работает в Докер контейнере.
  2. Также mysql работает в другом контейнере докера.
  3. Я пытаюсь соединить приложения Java к MySQL, используя эту конфигурацию -

    db.driver: com.mysql.jdbc.Driver 
    db.url: jdbc:mysql://mysql_docker_IP:3306/Database_Name 
    db.username: user 
    db.password: password 
    
  4. Однако Java-приложение докер-контейнер не может подключиться к MySQL-контейнера:

ERROR LOG

2016-08-10 06:36:04 WARN JdbcServicesImpl: 204 - HHH000342: не удалось получить соединение для запроса метаданных: Сообщения отказа канала com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications провала ссылки

Есть ли у кого-нибудь идеи о том, в чем проблема?

+0

Уверенный, что у вас есть правильный IP-адрес для контейнера docker mysql? Сообщение об ошибке предполагает, что нет. Какую версию докера вы используете? Вы должны иметь доступ к контейнеру по имени, используя встроенный DNS, который поставляется в последних версиях докеров. –

+0

@ MarkO'Connor благодарит за ответ ... Марк вы можете посмотреть подробное объяснение/обсуждение проблемы по этой ссылке https://github.com/docker/docker/issues/25562 и предложить помощь. – rg11

+0

Я думал, что объяснения, данные «thaJeztah», были превосходными. Проблема здесь в том, что ваша проблема теперь распространяется между postoverflow posting и github. Я настоятельно рекомендую вам пересмотреть это сообщение с релевантной информацией о том, как вы создаете свой контейнер Mysql. Еще лучше, начните с официального образа mysql и устраните один из возможных источников ошибок. См. Https://hub.docker.com/_/mysql/. То, что не было очевидно из ваших первоначальных сообщений, заключалось в том, что вы создаете заказное изображение и называете его «mysql». –

ответ

0
  • Использование MySQL имя контейнера в качестве имени хоста

    db.driver: com.mysql.jdbc.Driver 
    db.url: jdbc:mysql://mysql_container_name:3306/Database_Name 
    db.username: user 
    db.password: password 
    

    Примечание: порт должен быть порт, в котором MySQL контейнер работает.

Смежные вопросы