分析问题,问题可能出在服务器系统时间、docker时间、代码输出时间或其他之中。
1、查询服务器系统时间是否有问题,可调用linux命令:
date 或 date -R
检查当前服务器系统时间,如发现问题出现于此,对应修改即可
2、查询docker时间是否有问题,由于docker容器是相对独立的,所以每个容器的时间是各自设置的
首先检查指定容器的时间是否有问题,调用linux命令:
①docker ps
②docker exec [container_id] date
如有问题,本人遇到过几次这样的问题,现总结出几种方式:
①修改Dockerfile,在该文件中添加
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
以上为创建镜像时,将docker容器的时区进行设置,该方法偶尔行不通,本人目前有6个项目其中有2个nodejs项目不能如此解决,但是又有1个nodejs项目可以通过该方法解决,实在费解。
②修改创建容器语句,本人使用的intellij编译器,部署docker时首先是创建容器,然后再调用Dockfile,因此在创建容器的时候就修改容器创建语句,指定时区就可以解决这个问题。
如图:加上该句即可
-v /etc/localtime:/etc/localtime:ro
3、如果以上都不能解决问题的话,可能就和代码有关了,检查下代码吧
我看到有些资料是针对JAVA服务的解决方案,通过修改JVM的时间解决时间不对的问题,也是一种解决思路。