Docker容器中文支持及时区设置问题

环境
FROM openresty/openresty:centos7
此centos集成了nginx的配置。
问题
Java服务启动后日志输出如下:
日志输出中文为?
问题查看
执行locale -a命令,发现不支持zh_CN.utf8字符集。
问题解决
方式一:

  1. yum install kde-l10n-Chinese -y 安装语言包(针对centos 7)
  2. yum reinstall glibc-common -y 更新gitbc 包
  3. localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 (设置系统语言包)
  4. vim /etc/locale.conf 添加:LANG=“zh_CN.UTF-8”
    如果执行命令时,报出Failed to set locale, defaulting to C错误,是由于没有设置正确的语言环境。
    可设置语言环境:
echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile 
source /etc/profile

方式二:
经过方式一解决过后,发现虽然系统可以支持输入输出中文了,但是控制台日志中文输出还是乱码。
所以为了从根源上解决问题,还是要重构Dockerfile文件,不通过后天修改容器,让其镜像天生自带中文支持。
Dockerfile添加如下内容:

#设置系统编码
RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8

添加以上内容后,构建出来的镜像支持中文,日志输出也正常了。


中文编码解决了,但是运行时发现时间慢了八个小时。
本次依旧从Dockerfile入手解决,添加一下内容即可:

#定义时区参数
ENV TZ=Asia/Shanghai
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

当然除此之外还有很多解决时区的方法,通过容器卷或者拷贝均可实现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值