spring boot本地开发与docker容器化部署的差异:
1. 文件路径及文件名区别大小写:
本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写
2. docker中的容器内的时区需要单独设置
docker内的时间与北京时间差8小时,所以需要设置一下 时区,可以在dockerfile中修改,或修改部署的yaml文件:name:TZ value:Asia/Shanghai
3. 获取模板文件:
容器化后,Resource下的文件是存在于jar这个文件里面,在磁盘上是没有真实路径存在的,它其实是位于jar内部的一个路径。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法都无法正确获取文件,只能通过stream的形式获取:
正确的写法:
InputStream stream = this.getClass().getClassLoader().getResourceAsStream(/template/opinion/33.docx")
或者:
ClassPathResource resource = new ClassPathResource("/template/opinion/33.docx"); //加载模板文件,并替换机构意见书数据
XWPFTemplate template = XWPFTemplate.compile(resource.getInputStream())
.render(model);
4. 容器内默认是不支持中文字体的。如果需要如pdf打印的话,就需要安装字体