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


    最近遇到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 中有多条时,只会执行最后一条;允许被修改;

  • 相关阅读:
    Hello Erupt
    【Day21】Java线程(创建线程的两种方法)
    微服务远程调用之拦截器实战
    MySQL 事件调度
    公司招了一个腾讯拿30K的人,让我见识到了什么是天花板···
    前端面试题
    cmake命令
    [附源码]Python计算机毕业设计SSM建筑材料采购管理系统(程序+LW)
    数据处理过程中的解决办法
    聊聊秒杀系统的设计(一)
  • 原文地址:https://blog.csdn.net/m0_37787662/article/details/127761811