Невозможно связать Docker-контейнер MySQL с приложением весенней загрузки - сбой канала связи - PullRequest
0 голосов
/ 28 января 2019

Я новичок в Docker.Я использую Spring boot micro service.На моем локальном компьютере все работает хорошо.Теперь мне нужно создать образ докера для моего приложения.Это зависит от сервера Mysql.Я использую docker-compose для создания своих контейнеров.Я получаю ошибку сбоя канала связи при запуске моего пользовательского образа (приложения с загрузочной пружиной).Образ Mysql работает хорошо независимо.

Мой файл yml:

version: '2'

services:

  mysql-dev:
    image: mysql:5.7
    container_name: mysql-dev
    environment:
      MYSQL_ROOT_PASSWORD: "password"
      MYSQL_DATABASE: "onlinetutorialspoint"
    networks:
      - my_mysql_net
    ports:
      - 3306:3308

  spring_boot_db_service:
    depends_on:
      - mysql-dev
    image: spring_boot_db_service
    ports:
      - 8181:8181
    links:
      - mysql-dev:mysql
    networks:
      - my_mysql_net

networks:
  my_mysql_net:
    driver: bridge 

Файл свойств приложения:

db.driver: com.mysql.jdbc.Driver

spring.datasource.url = jdbc:mysql://mysql-dev:3308/onlinetutorialspoint?useSSL=false

spring.datasource.username = root

spring.datasource.password = password

Полное сообщение об ошибке:

spring_boot_db_service_1 |2019-01-28 13: 34: 06.955 ИНФОРМАЦИЯ 1 --- [
main] org.hibernate.cfg.Environment: HHH000206: hibernate.properties не найден spring_boot_db_service_1 |2019-01-28 13: 34: 07.000 INFO 1 --- [main] o.hibernate.annotations.common.Version: HCANN000001: аннотации общих номеров Hibernate {5.0.1.Final} spring_boot_db_service_1 |2019-01-28 13: 34: 08.430 WARN 1 --- [ main] ohejeiJdbcEnvironmentInitiator: HHH000342: Не удалось получить соединение с метаданными запроса: сбой канала связи spring_boot_db_service_1 |spring_boot_db_service_1 |Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад.Драйвер не получил никаких пакетов с сервера.spring_boot_db_service_1 |2019-01-28 13: 34: 08.443 INFO 1 --- [
main] org.hibernate.dialect.Dialect: HHH000400: Использование диалекта: org.hibernate.dialect.MySQL5Dialect spring_boot_db_service_1 |2019-01-28 13: 34: 08.459 ИНФОРМАЦИЯ 1 --- [main] ohejeiLobCreatorBuilderImpl: HHH000422: отключение создания контекстного большого объекта, поскольку соединение было пустым spring_boot_db_service_1 |2019-01-28 13: 34: 08.921 ПРЕДУПРЕЖДЕНИЕ 1 --- [
main] ConfigServletWebServerApplicationContext: Возникла исключительная ситуация во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'dbServiceImpl': Неудовлетворительная зависимость выражается через поле' dbServiceDao ';вложенным исключением является org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания компонента с именем 'dbServiceDaoImpl': неудовлетворенная зависимость, выраженная через поле 'sessionFactory';вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'sessionFactory' , определенного в ресурсе пути к классу [com / htc / dbservice / configuration / DBConfiguration.class]: сбой вызова метода init;вложенное исключение: org.hibernate.MappingException: не удалось получить конструктор для org.hibernate.persister.entity.SingleTableEntityPersister spring_boot_db_service_1 |2019-01-28 13: 34: 08.923 ПРЕДУПРЕЖДЕНИЕ 1 --- [
main] osbfsupport.DisposableBeanAdapter: сбой вызова метода уничтожения «close» для компонента с именем «eurekaRegistration»: org.springframework.beans.factory.BeanCreationNotAllowedException: Ошибка создания компонента с именем org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration $ RefreshableEurekaClientConfiguration ': Создание компонента Singleton не разрешено, пока синглтоны этой фабрики находятся в процессе уничтожения (Не запрашивайте компонент из BeanFactory в реализации метода уничтожения!) spring_boot_db_service_1 |2019-01-28 13: 34: 08.926 ИНФОРМАЦИЯ 1 --- [main] o.apache.catalina.core.StandardService: Остановка службы [Tomcat] docker_spring_boot_db_service_1 с кодом 1

1 Ответ

0 голосов
/ 28 января 2019

Вы изменили порт mysql по умолчанию?если нет, вы указываете на неправильный номер порта.Когда вы сопоставляете порт для внешней публикации службы, используется следующий порядок:

<host-port>:<container-port>
services:   
   mysql-dev:  
     image: mysql:5.7  
     container_name: mysql-dev  
     environment:  
       MYSQL_ROOT_PASSWORD: "password"  
       MYSQL_DATABASE: "onlinetutorialspoint"  
     networks:  
       - my_mysql_net  
     ports:  
       - 3308:3306  

. Используя docker-compose и подключая обе службы к одной сети, вы можете подключиться напрямую к контейнеру без публикации mysql.порт во внешнюю сеть.Попробуйте изменить приложение Spring, указав на mysql-dev: 3306, или попробуйте подключиться к контейнеру spring_boot_db_service , используя

docker-compose exec spring_boot_db_service bash  

, и выполните тест подключения к контейнеру базы данных.

...