Alpine 3.17容器中Python datetime.now()未返回正确系统时间问题
问题排查:Alpine镜像中Python datetime.now()返回UTC而非IST时区时间
核心原因
- Alpine Linux默认未预装完整的
tzdata时区数据库包。虽然系统通过TZ环境变量配置显示IST时间(date命令正常输出),但Python的datetime模块依赖tzdata提供的时区数据文件来识别本地时区,缺失该包时会默认 fallback 到UTC。 - 系统层面的时区显示仅依赖环境变量,而Python的时区解析需要实际的时区数据库支持。
解决步骤
安装tzdata包
在Dockerfile中添加安装命令,确保构建镜像时包含时区数据:RUN apk add --no-cache tzdata设置时区环境变量
在Dockerfile中指定IST对应的时区(Asia/Kolkata):ENV TZ=Asia/Kolkata或者在启动容器时临时传入:
docker run -e TZ=Asia/Kolkata your-fastapi-image验证修复
重新构建镜像并运行,执行以下代码即可得到IST时间:import datetime print(datetime.datetime.now())
内容的提问来源于stack exchange,提问作者Hrm
相关产品推荐
相关产品推荐

