1. 背景说明
最近使用springboot项目进行docker部署时,找不到自定义的文件信息,(一直报错known)百度了很久, 也没能解决问题,还是一直找不到解决方式。
a. docker构建镜像部署成功,但是要读取background中的文件 一直读取不到:
b. 我们看target目录,发现文件也已经打包进去了:
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)在构建镜像时,如果提示找不到你的资源文件,请加入缓存机制,把文件进行缓存,这样,就不会找不到你的文件了,如下图:
你的努力,终将成为你最有力的资本!