问题
定时任务相关的一个数据一直不准确,设定的是每天0点执行。后来发现是docker容器内有时差,导致任务延迟执行
CST应该是指(China Shanghai Time,东八区时间) UTC应该是指(Coordinated Universal Time,标准时间) 所以,这2个时间实际上应该相差8个小时。
方案一 dockerfile 问题解决
FROM openjdk:8u201-jdk-alpine
ENV LANG zh_CN.UTF-8 ENV LC_ALL zh_CN.utf8
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime && echo 'TZ' > /etc/timezone
RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
CMD ["sh","-c","/data/startServer.sh"]
修改dockerfile时区 重新构建jdk的镜像
并重新生成容器启动
方案二 问题解决
在容器中创建文件夹
mkdir -p /usr/share/zoneinfo/Asia
Ctrl+D 退出容器 执行下面命令
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/usr/share/zoneinfo/Asia
再进入容器
docker exec -it 容器id /bin/sh
执行命令
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime