问题:应用查询出来的时间与数据库中存储的时间相差8小时(典型时区问题)
排查步骤:
1. 检查代码中数据库连接配置
2. 查看服务器的时区
在服务器执行 date 命令查看当前时间
3. 应用采用docker部署,基础镜像使用的时区
利用docker exec -it 容器名字 /bin/bash
执行 date 命令查看当前时间
原因分析
最终发现是dockerfile中基础镜像的时区不对导致
解决方案
#变更前
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/tomcat:9.0.107-jdk21-temurin
#变更后
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/tomcat:9.0.107-jdk21-temurin
# 设置时区为东八区(上海)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone