基于openeuler构建的镜像输出日志中文显示问号问题的处理过程

67 阅读1分钟

openeuler容器jar刷日志中文日志显示问号处理

问题描述

在使用openeuler:22.03-lts-sp2 构建jdk1.8 的基础环境作为jar包服务运行环境,在运行过程中,发现日志中中文全部显示问号

处理过程

处理办法1

根据资料,在/root/.bashrc内设置

export LC_ALL=C.utf8
export LANG=C.utf8

设置完成之后,保存镜像,给镜像打tag,push测试发现日志依然显示问号

处理办法2

在镜像构建的Dockerfile,设置相关环境变量,如下

FROM openeuler/openeuler:22.03-lts-sp2
ENV TimeZone=Asia/Shanghai
ENV LANG=zh_CN.UTF-8
RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime && \
    sed -i "s/TMOUT=300/TMOUT=0/g" /etc/bashrc && \
    yum -y update && \
    yum -y install perf lsof net-tools nc tcpdump && \
    yum clean all && rm -rf /var/cache/yum

CMD ["bash"]

在构建完镜像后,发现依然存在中文问号

处理办法3(原理同方法1

FROM openeuler/openeuler:22.03-lts-sp2
RUN yum -y update && \
yum -y install iproute net-tools vim-enhanced bash-completion telnet perf nc unzip fontconfig && \
yum clean all && echo "export LC_ALL=C.utf8" >> /root/.bashrc && echo "export LANG=C.utf8" >> /root/.bashrc && source /root/.bashrc && \
rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

在构建完镜像后,发现依然存在中文问号

最终处理办法

在Dockerfile内定义环境变量ENV LANG C.UTF-8,Dockerfile定义如下:

FROM openeuler/openeuler:22.03-lts-sp2
ENV TimeZone="Asia/Shanghai"  LANG="C.UTF-8"
RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime && \
    sed -i "s/TMOUT=300/TMOUT=0/g" /etc/bashrc && \
    yum -y update && \
    yum -y install perf lsof net-tools nc tcpdump && \
    yum clean all && rm -rf /var/cache/yum
CMD ["bash"]

构建镜像,日志中中文显示正常