最近通过Docker + harbor + kuboard方式进行在开发环境进行部署,遇到了一个问题,本地idea中运行项目正常,但是kuboard一直报错重启。
BACK-OFF RESTARTING FAILED CONTAINER
通过查看kuboard日志发现是在运行容器启动项目时,缺少了一个本地数据库连接驱动。
然后检查项目中的pom文件,一开始感觉一切正常。pom配置如下:
<dependency><groupId>com.dm</groupId><artifactId>DmJdbcDriver</artifactId><version>18</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver-18.jar</systemPath></dependency>………<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins><build/>
其中数据库驱动放在了resources目录下的lib文件夹下,通过在dependency中直接本地指定。后面在通过在plugin maven工具中声明 includeSystemScope
支持本地jar包的形式。
但是后面无论怎么重新打包都是报相同错误。
后面在别人的代码里发现下面这段:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory></resource><resource><directory>lib</directory><targetPath>BOOT-INF/lib/</targetPath><includes><include>*.jar</include></includes></resource></resources></build>
然后将这段 resources
移植到了我的build
下,重新打包之后,错误就消失了,项目成功运行,但是我还是没搞懂具体原因。然后又把这段代码注释掉,删除本地target,重新mvn clean package
,打算到jar包里去看看,到底有没有导入进去,但是这一次包里已经有了本地jar包,而且也没有报错了,问题无法复现了。虽然问题稀里糊涂的解决了,但是这种搞不清楚原因的事情真让人火大,希望下次在遇到类似问题可以找到原因吧。