Docker-Compose部署微服务项目出现日志中文乱码以及数据乱码问题

     这几天本人使用docker-compose 容器编排工具重构公司的项目运维体系,大概部署了有二十来个微服务,全部都使用了docker容器进行部署,一切都运行正常.但是一个星期后发现部分微服务的日志里中文乱码,并且上传的中文数据也是出现了乱码的情况.这肯定是不能容忍的啊.然后开始逐渐去排查.

     首先想到的就是docker容器的字符集有问题,因为docker容器都是阉割版的linux,很多的功能都是没有的,然后进入docker容器内部进行排查

#进入docker容器内部命令
docker exec -it -u root fc73b876a174 /bin/bash

然后我们使用locale 命令看下字符集

可以看到设置的字符集是POSIX,这肯定是不能识别中文的啊,那必须要改啊

怎么改呢,看了网上大量的文章,最后总结出来一个比较有效的方法,就是在docker-compose.yml文件中,对每个服务加上环境变量

我们指定使用英文的UTF-8,然后删除容器,再重新添加容器,并启动,再使用 locale 命令查看字符集

可以看到字符集变为英文的UTF-8

如果有些人没有en_US.UTF-8字符集就需要下载了,如何知道有没有呢,可以使用  locale -a查看一下

如果有人使用的是docker直接运行,而不是使用docker-compose的话,可以在启动的时候指定字符集即可

docker run -di -v XXX:XXX -e LANG=en_US.UTF-8 ....

 

然后我们开始访问项目,查看是否乱码

成功解决乱码问题.

 

到此如果有人出现了日志中文乱码正常了,但是传输的中文数据乱码的情况话,我建议你查一下微服务的网关docker容器是否也修改了字符集,网关如果忘记修改则会出现数据乱码的情况哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值