Docker容器内日志中文乱码问题
在使用docker部署java项目后,启动项目,并查看日志,发现日志内中文出现乱码,影响问题排查
原因:容器编码问题
解决方案:设置容器编码
1、查看编码:
首先进入容器中,查看默认的编码格式,如图:

从上图中可以看出,编码格式都是POSIX,此种编码不支持中文
执行locale -a查看所有语言包,如图:

2、修改编码,有如下2中方式:
(1) DcokerFile中增加环境变量
ENV TZ 'Asia/Shanghai'
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

(2) 如果是通过docker run命令运行,那么可以这样下,如下:
docker run -d \
....
-e LANG=en_US.UTF-8 \
-e LANGUAGE=en_US:en \
-e LC_ALL=en_US.UTF-8 \
....
jdk:1.8
启动后再次进入容器中查看编码,执行命令locale,如图:

并且日志中也可以正常输出中文
也可以在启动容器的时候,指定编码,比如启动chrome/headless-shell,如下:
docker run -d -p 9222:9222 --privileged -e LANG=C.UTF-8 -v /etc/localtime:/etc/localtime --name chrome-headless chromedp/headless-shell
- -e LANG=C.UTF-8:支持中文


