解决docker容器内使用java drawString生成水印图片中文方框的问题
1、docker容器内 2、有jdk环境 3、无字体环境
解决方案:自己制作一个镜像,Dockerfile见下
FROM registry.cn-hangzhou.aliyuncs.com/ghoulich-centos/centos:7.4.1708 MAINTAINER zxp ***@163.com COPY agent agent # 支持skywalking探针 COPY jdk1.8.0_131 jdk1.8.0_131 # 拷贝oracle jdk 需要在jdk1.8.0_131/jred/lib/fonts中创建fallback目录,并添加simsun.ttc COPY fonts /usr/share/fonts # 拷贝字体 包含simsun.ttc ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV JAVA_HOME=/jdk1.8.0_131 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
制作镜像并上传阿里云镜像中心
$ docker build -t jdk8:latest .
$ sudo docker login --username=zxpdt@163.com registry.cn-hangzhou.aliyuncs.com password:密码 $ sudo docker tag [镜像id] registry.cn-hangzhou.aliyuncs.com/zxporz/jdk8:[版本] $ sudo docker push registry.cn-hangzhou.aliyuncs.com/zxporz/jdk8:[版本]
用自己上传的镜像作为base
FROM registry.cn-hangzhou.aliyuncs.com/zxporz/jdk8:latest ENV TZ CST-8 COPY *.jar /*.jar ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8 -Duser.language=zh -Duser.region=zh_CN -Duser.country=zh_CN ENTRYPOINT exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap $JAVA_OPTS $SKYWALKING_OPTS -jar /*.jar