Docker中文编码乱码问题

-
-
2024-05-06

问题背景

今日生产有一个服务迁移到docker里面之后,一直提示签名失败,迁移之前都正常而且公钥和私钥并未做变更,排查了公私钥问题之后发现,docker compose不使用-d挂起时打印的日志存在中文乱码,猜测是否是由于默认编码不同导致的签名不通过,后证实签名串含有中文才会失败,那就肯定是编码问题了。

修改默认编码

可以在Dockerfile中、启动时、docker-compose.yml中的任意一个地方,指定环境变量LANG=en_US.UTF-8

这里之所以不使用zh_CN.UTF-8是因为我使用的基础镜像里只安装了en_US.UTF-8这个中文编码,具体可以根据实际情况修改编码或者安装好编码再修改环境变量。

查看镜像已安装的编码

先查看容器id

docker ps

进入容器内部

docker exec -it 303798101c4a sh

查看已安装的所有编码

locale -a

 

 


目录