Docker 中修改时区的问题

问题描述

最近在 Docker 中修改时区遇到了一个问题,就是 python3 启动 apscheduler 时会通过接口去拿系统时区,而我之前 Docker 中的时区是这么改的:

RUN  cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

然后报错这样:

tzlocal.utils.ZoneInfoNotFoundError: 'Multiple conflicting time zone
configurations found:\n/etc/timezone:Asia/Shanghai\n/etc/localtime is
a symlink to: ICT\nFix the configuration, or set the time zone in a TZ
environment variable.\n'

解决方案

大概意思是目标的时区配置文件和 /etc/timezone 中的时区名冲突,代码试图去拿 /etc/localtime 软链接指向的文件,而因为我是通过拷贝将 Asia/Shanghai 拷贝到 /etc/localtime,而该文件软链接指向的文件是 UCT,所以导致的错误。正确操作是使用软链接将 /usr/share/zoneinfo/Asia/Shanghai 软链接到 /etc/localtime

因此需要把拷贝操作改为:

RUN rm -f /etc/localtime
RUN  ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

(本文完)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值