我正在使用Spring Boot,Spring Cloud Config和Docker开发Web应用程序。有3个项目。一个是springboot web,Spring Cloud Config Server和MySql Database。我用 Spring Boot Web 和 Themeleaf。它基本上是执行 CRUD 操作。在开发阶段,它工作正常。但是当我在 Docker 中部署它时 Spring-Boot webapp container(springboot-thymeleaf-web-crud)给了我以下错误--
应用程序无法启动
描述:
配置数据源失败:"url"属性未指定,无法配置嵌入数据源。
原因:无法确定合适的驱动程序类
行动:
请考虑以下事项: 如果你想要一个嵌入式数据库(H2、HSQL 或 Derby),请把它放在类路径上。 如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有处于活动状态的配置文件)。
我已经在 Docker 撰写文件上创建了 3 个容器。
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.properties如下
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 Server 提供以下属性--
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)通过给出上述错误退出。
注意:我在其他一些 SpringBoot Rest API 上使用相同的 datasouce(Spring Data JPA) 配置。哪些工作正常。但这是我第一次使用SpringBoot Web。是否需要在数据源上显式定义任何配置。
请帮忙!!
数据源 URL,即spring.datasource.url: jdbc:mysql://employee-
可能是错误的。 或者 应将数据源 URL 添加到应用程序属性文件中
网址的格式应为jdbc:oracle:thin:@hostname:portNumber/schemaName
有关更多详细信息和说明,请勿在 jdbc url 中使用主机名和端口
我执行以下任务来解决问题--
1)我们应该启动并运行mysql 容器。
2) 检查 ip 运行的 mysql 容器-- Docker Inspect MySQLcontainer |格雷普知识产权
3) 将该 mysql 容器的 IP 添加到我的 春靴网络应用--
"spring.datasource.url: JDBC:MySQL://172.20.0.2:3306/employee_directory? useSSL=false&server时区 =UTC&useLegacyDatetimeCode=false">
4)运行MVN清理,MVN安装并构建 SpringBoot Web image.
5)如果我们放下容器,我们需要执行 再次完成相同的任务。因为每次Mysql 容器获取不同的 IP。