spring boot 打成jar包 docker部署找不到resource下面文件问题

1. 背景说明

最近使用springboot项目进行docker部署时,找不到自定义的文件信息,(一直报错known)百度了很久, 也没能解决问题,还是一直找不到解决方式。

a. docker构建镜像部署成功,但是要读取background中的文件 一直读取不到:

spring boot 打成jar包 docker部署找不到resource下面文件问题_第1张图片

b. 我们看target目录,发现文件也已经打包进去了:

spring boot 打成jar包 docker部署找不到resource下面文件问题_第2张图片

 c. 使用 this.class.getResourceAsStream("文件");可以正常读取到,但是他返回的是InputStream,无法构建出我们想要的File。

File file = new File(resource);

2. 解决方式

a. 因为当前项目中,使用到的是gitlab-ci实现自动打包部署的方式,进行项目docker部署的(后续会整理相关文档);

--自动部署:当有代码提交时,会自动构建docker镜像,并进行部署;

b. 在构建镜像时,把我们要用到的资源文件(resource下的文件),构建到我们的镜像中:

 

c. 同时,在代码中取文件的时候,使用  ClassPathResource 方法,进行获取:

 import org.springframework.core.io.ClassPathResource;

 String resource = new ClassPathResource("文件路径").getPath();
 File file = new File(resource);

 没有试验Hutool中的 ClassPathResource方法,猜测应该也可以;

注意:(gitlab-ci)在构建镜像时,如果提示找不到你的资源文件,请加入缓存机制,把文件进行缓存,这样,就不会找不到你的文件了,如下图:

spring boot 打成jar包 docker部署找不到resource下面文件问题_第3张图片

你的努力,终将成为你最有力的资本! 

你可能感兴趣的:(Java问题解决,spring,boot,docker,jar,java)