东方通docker容器部署中文乱码问题

七海恋空 2021-04-02 浏览(0 评论(0

最近一直在部署信创环境,一堆国产软件已经坑的不行不行的了,还特么要用腾讯云部署。腾讯云这个产品貌似也没什么自己底层技术,无非是k8s和docker。好在腾讯云提供了东方通docker容器镜像,要部署什么应用,直接在这个镜像基础上追加就行了。

人都是懒惰的,麻烦能少一点是一点。腾讯云提供的基础镜像用的是系统默认字符集POSIX,不支持中文。查看文件时,有中文的地方都是乱码。我在东方通后台装完应用查看日志,发现输出的都是各种问号。该死,几十年了,Linux的中文乱码毛病还是这么恶心。恶心了好多天,今天终于不得不着手解决这个问题了,处理这个中文乱码问题要修改两个地方,一个是系统的字符集,另一个是东方通的后台配置。

修改系统的字符集,我一开始是这样修改的。因为是通过docker容器部署的,我首先进入容器,然后使用export LANG=zh_CN.utf8命令临时改变系统的字符编码,结果东方通输出的日志仍然是一堆问号。之后,听了同事的意见,我把东方通有配置GBK的地方都改成UTF-8了,结果还是乱码,真是火大。

正确的修改方式应该是这样,将字符集配置写入环境变量,然后启动容器。下面是我用的命令行:

docker run -dit --privileged --env LC_ALL=zh_CN.utf8 --name=mydocker --network=host 9624e1f8f101 /bin/bash

privileged这个参数是为了方便我改容器的系统时间才加的

env参数是增加环境变量,配置系统字符集的

name参数是要创建的容器名字

network参数是为了让容器连接外面的数据库,所以使用主机模式启动容器

通过这个命令启动的docker容器可以预先设置容器的系统字符集,当然用Dockerfile加入环境变量应该也是可以的。启动容器后,要第一时间修改东方通的字符集编码配置,千万不要安装完应用之后才来改。修改东方通的字符编码还是挺简单的,修改conf目录下的tongweb.xml文件,GBK都改成UTF-8即可。当然也可以登录东方通后台修改,修改路径:【WEB容器配置】-【容器配置】和【WEB容器配置】-【HTTP通道管理】。不过还是改xml文件方便一点,也不会弄乱其他的配置。