Настройте приложение и базу данных MySQL в docker-compose.yaml - не удалось открыть соединение JDBC - PullRequest
0 голосов
/ 19 октября 2018

Я настроил приложение и базу данных mysql в файле docker-compose.yaml ниже.Пока обе службы запускаются, приложение не может открыть соединение с БД при отправке http-запроса.Когда приложение и база данных mysql определены в отдельных контейнерах, запрос выполняется успешно.Я уверен, что это что-то простое в конфигурации docker compose.

version: '3.7'

services:
  database:
    image: mysql:5.7
    container_name: docker_test-device-telemetry-mysql
    command: --explicit_defaults_for_timestamp
    environment:
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"

    volumes:
    - ./initdb.d:/docker-entrypoint-initdb.d
    ports:
    - "6603:3306"

  device-telemetry:
    image: 224713337986.dkr.ecr.eu-west-1.amazonaws.com/device-telemetry:2.5.0
    container_name: docker_test-device-telemetry-app
    volumes:
      - ./application.yaml:/application.yaml
      - ./bootstrap.yaml:/bootstrap.yaml
    ports:
      - "7857:7847"
    depends_on:
      - database

"timestamp": "2018-10-18T20: 46: 17.654 + 0000", "status": 500, "error":«Внутренняя ошибка сервера», «исключение»: «org.springframework.transaction.CannotCreateTransactionException», «message»: « Не удалось открыть JDBC-соединение для транзакции; вложенное исключение - java.sql.SQLException: не удалось создать PoolableConnectionFactory (Ошибка канала связи \ n \ nПоследний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил пакетов от сервера.) ",}

1 Ответ

0 голосов
/ 19 октября 2018

Проблема в ссылке на URL-адрес, содержащий сведения о БД в приложении. Yaml

Это должно быть

url: jdbc: mysql: // база данных : 3306 / local_telemetry

где база данных - это имя базы данных, определенной в docker-compose.yaml

, а не

url: jdbc: mysql: // 127.0.0.1 : 3306 / local_telemetry

...