最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下,结果正常导出,同一份代码部署到测试怎么就不一样了呢,无奈只能查看服务器日志,发下如下错误:
java.lang.IllegalArgumentException: The workbook already contains a sheet named
结果百度了一下午,没有解决方案,偶然看到一个资源下载,说是Docker缺少字体库原因,我突然想到之前处理过一个问题,也是Docker部署项目,然后图形验证码不显示问题。
之前的解决方案是吧 Dockerfile中的From及基础镜像从 openjdk修改为Oracle Jdk。因为openjdk是不包含字体库的。
FROM java:8
MAINTAINER cp
ENV TZ Asia/Shanghai
EXPOSE 8080
COPY . /
WORKDIR /
RUN chmod +x /bin/*.sh
CMD [ "./bin/startDocker.sh" ]
现在提供下第二种方案:制作一个含字体库的openjdk镜像
调整Dockerfile文件如下:
FROM openjdk:8-jdk-alpine
MAINTAINER cp cp@163.com
ENV TZ Asia/Shanghai
EXPOSE 8080
COPY . /
#拷贝字体文件
COPY ./config/font/SimHei.ttf /usr/share/fonts/SimHei.ttf
WORKDIR /
RUN chmod +x /bin/*.sh \
&& echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \
&& apk update upgrade \
&& apk add --no-cache procps unzip curl bash tzdata \
&& apk add ttf-dejavu \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
CMD [ "./bin/startDocker.sh" ]
描述:通过alpine构建其他的镜像报错,报临时文件不可用,但是,通过浏览器是直接可以下载到tar包的。
fetch http://mirrors.aliyun.com/alpine/edge/testing/x86_64/APKINDEX.tar.gz
ERROR: http://mirrors.aliyun.com/alpine/v3.11/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.2dee45f2.tar.gz: No such file or directory
ERROR: http://mirrors.aliyun.com/alpine/edge/testing: temporary error (try again later)
WARNING: Ignoring APKINDEX.f46ee61c.tar.gz: No such file or directory
解决:通过本地的网络进行构建,问题得到解决。
打包镜像:
docker build -t my-openjdk8 . --network=host