docker 镜像中文支持问题

走远了吗. 提交于 2020-02-26 11:00:12

* Docker解决中文乱码实践

  • 问题

在公司使用dockers镜像中遇到一个问题,同事的python代码中使用 xx_str.encode('utf-8')在包含中文路径时报出异常,但在开发环境中没有遇到。

ps. 在开发中不要使用中文传递参数

  • 排查步骤
# 分别在开发环境和docker容器中执行 
locale -a

# 可以查看到docker环境仅包含posix编码,开发环境包括utf-8

# 调用python命令行执行:
sys.getdefaultencoding()
# 也可以发现两者的区别
  • 尝试解决

由于同事无法直接提供Dockerfile,只能在他的镜像基础上做修改, 制作如下的Dockerfile

FROM XXX # 同事的镜像名

RUN yum install kde-l10n-Chinese -y &&\
    yum reinstall glibc-common -y &&\
    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

ENV LANG zh_CN.UTF-8

WORKDIR /home/xxxx # 指定原先的工作路径

COPY run.sh . #新增一个启动脚本

EXPOSE 8080

ENTRYPOINT ["/bin/bash","run.sh"]

安装步骤

docker build -t xxx #创建新镜像
docker run -d --rm xxx -p 10081:8080 xxx # 启动镜像
docker ps -a | grep xxx # 查找执行容器
docker exec -it xxxx bash # 到容器执行控制台
locale -a # 查看当前系统编码, 修改为zh_CN.utf-8

参考

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!