解决Devops部署Java应用中文乱码

博客讲述了在Devops部署中遇到的Tomcat显示中文二维码图片出现方格的问题,原因是容器缺少特定字体。解决方案是在Dockerfile中引入所需字体,并设置环境变量LANG为zh_CN.utf8。此外,还提供了Dockerfile的相关命令解释。
摘要由CSDN通过智能技术生成

最近遇到Devops部署war到Tomcat中文乱码问题,Java生成的二维码图片,部署后中文变成了方格,如下:

 这是因为生成二维码图片时指定了字体,如微软雅黑,但容器里面没有该字体导致,需要在dockerfile里面引入需要的字体,参考示例:

FROM tomcat(声明tomcat镜像版本)

WORKDIR /home(设置工作路径)

COPY ./target/demo.war /usr/local/tomcat/webapps/demo.war(拷贝war包到目标路径)

RUN ln -s /nfs-data/file /usr/loacl/tomcat/webapps(建立软连接,按需使用该命令)

COPY ./fonts/msyh.ttc /usr/lib/jvm/java-1.8.0/jre/lib/fonts/msyh.ttc(引入字体到jre目录)

ENV LANG zh_CN.utf8(指定字符集)

注意:需要在SpringBoot项目中创建和target同级的fonts目录,放需要的字体,这样dockerfile在构建的时候copy到运行的jre目录,就能使用了,该dockerfile适用于devops部署,如只使用docker部署,可以直接将需要的字体,上传到容器的jre/fonts目录,再重启应用即可生效

查看Linux jdk运行目录命令

echo $JAVA_HOME

Docker命令详解

FROM :定制的镜像基于哪个镜像

MAINTAINER:作者信息

WORKDIR:设置工作路径

COPY:复制文件到容器

ADD:复制文件同时解压或执行

ENV:设置环境变量

EXPOSE:设置暴露哪个端口给宿主机

RUN:执行后面的命令,作用于镜像层,镜像构建时就执行;dockerfile 中有多条时,都会执行;

ENTRYPOINT:执行后面的命令,作用于容器层,容器启动时执行;dockerfile 中有多条时,只会执行最后一条;

CMD:执行后面的命令,作用于容器层,容器启动时执行;dockerfile 中有多条时,只会执行最后一条;允许被修改;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值