Не удалось настроить источник данных: атрибут 'url' не указан, и встроенный источник данных не может быть настроен.Причина: Фа - PullRequest
1 голос
/ 17 июня 2019

Я занимаюсь разработкой веб-приложения с использованием Spring Boot, Spring Cloud Config и Docker. Есть 3 проекта. Одним из них является веб-версия Springboot, сервер Spring Cloud Config и база данных MySql. Я использовал Spring Boot Web с Themeleaf. Это в основном выполнить операцию CRUD. На этапе разработки все работает нормально. Но когда я разверну его в Docker Контейнер Spring-Boot webapp (springboot-thymeleaf-web-crud) выдает мне следующую ошибку -


Приложение не удалось запустить


Описание:

Не удалось настроить источник данных: атрибут 'url' не указан, и встроенный источник данных не может быть настроен.

Причина: не удалось определить подходящий класс драйвера

Действие:

Рассмотрим следующее: Если вам нужна встроенная база данных (H2, HSQL или Derby), поместите ее в путь к классам. Если у вас есть настройки базы данных для загрузки из определенного профиля, вам может потребоваться активировать его (в настоящее время профили не активны).

Я создал 3 контейнера в файле Docker Compose.

version: '3'

services: 
   springboot-thymeleaf-web-crud:
      image: numery/springboot-thymeleaf-web-crud:latest
      networks: 
         - employee-network
      ports:
         - 8080:8080 
      depends_on:
         - employee-database   
         - spring-cloud-config-server-employee

   spring-cloud-config-server-employee:
      image: numery/spring-cloud-config-server-employee:latest
      networks: 
         - employee-network
      ports:
         - 8888:8888

   employee-database:
      image: mysql:5
      networks:
         - employee-network
      environment:
         - MYSQL_ROOT_PASSWORD=rootpassword
         - MYSQL_DATABASE=employee_directory
      volumes:
         - /home/numery/Docker-Database/employee_directory:/var/lib/mysql

networks:
   employee-network:

SpringBoot Web Application. Свойства приведены ниже

spring.application.name=employee-service-mysql
server.port=8080
spring.cloud.config.uri=http://spring-cloud-config-server- 
employee:8888
spring.profiles.active=dev

Сервер SpringBoot Config предоставляет следующие свойства -

spring.datasource.url: jdbc:mysql://employee- 
database:3306/employee_directory? 
useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.datasource.username: root
spring.datasource.password: rootpassword
spring.datasource.validationQuery: SELECT 1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.tomcat.max-wait: 20000
spring.tomcat.max-active: 50
spring.tomcat.max-idle: 20
spring.tomcat.min-idle: 15

spring.jpa.properties.hibernate.dialect: 
org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql: true
spring.jpa.format-sql: true
spring.jpa.database: MYSQL
spring.jpa.hibernate.ddl-auto: create

Из этих 3 контейнеров контейнер Mysql и Spring Cloud Config работает нормально. Но для Spring Boot Webapp (springboot-thymeleaf-web-crud) завершает работу, сообщая об ошибке выше.

Примечание. Я использую ту же конфигурацию данных (Spring Data JPA) в некоторых других SpringBoot Rest API. Которые работают нормально. Но я впервые использую SpringBoot Web. Нужно ли явно определять какую-либо конфигурацию в источнике данных.

Пожалуйста, помогите !!

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Я выполняю следующую задачу для решения проблемы -

1) Мы должны запустить MySQL контейнер.

2) Проверьте контейнер mysql, на котором запущен ip-- докер инспектирует mysqlcontainer | grep IP

3) Добавьте IP-адрес этого контейнера MySQL в мой веб-приложение springboot--

"spring.datasource.url: JDBC: MySQL: //172.20.0.2: 3306 / employee_directory? UseSSL = ложно & serverTimezone = UTC & useLegacyDatetimeCode = ложь "

4) запустить mvn clean, установить и собрать mvn Веб-изображение SpringBoot.

5) Если мы опустим контейнер, нам нужно выполнить та же задача снова. Потому что каждый раз Mysql Контейнер получить другой IP.

0 голосов
/ 17 июня 2019

URL источника данных, то есть spring.datasource.url: jdbc:mysql://employee-, может быть неправильным.ИЛИ Следует добавить URL источника данных в Application.properties файл

URL должен быть в формате jdbc:oracle:thin:@hostname:portNumber/schemaName

Для получения дополнительной информации и уточнения, Неиспользуя имя хоста и порт в URL-адресе jdbc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...