在生成镜像的时候,默认的时区和操作系统的时区有可能是不一样的,导致在本地环境测试的代码放到服务器上就会有时区偏差的问题。主要的问题可能在于获取当前的日期,会获取到UTC的日期而不是本地的时区。

如果线上不用考虑多时区的问题,那么就可以将时区设置为和当地时区一样,减少代码中的转换和出错的可能。

一个示例代码Dockerfile,注意用的是debian的buster版本。如果是非debian的系统则没有dpkg-reconfigure命令,如何配置请参考系统的手册。

FROM python:3.8-buster

WORKDIR /usr/src/app

RUN ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .