背景:我们使用docker部署环境,把服务器的jenkins挂载到docker容器中运行。在jenkins中设置了job定时执行时间,却发现未按设置的时间运行
首先看了下历史构建版本的时间,跟jenkins中设置的执行时间刚好差8个小时,所以估计是时区的问题。
登录服务器发现/etc/localtime显示的时区为UTC,服务器上没有timezone文件(centos没有timezone文件)。但是docker运行后会从timezone中读取参数。
第一步:修改服务器上的localtime
删除原先的软链接:rm -rf /etc/localtime
然后重新创建软链接至正确的时区:ln -s /usr/share/zoneinfo/Asia/Shanghai
第二步:添加timezone文件
创建文件:touch /etc/timezone
添加内容:Asia/Shanghai
第三步:docker运行时把服务器的localtime和timezone文件一起挂载到容器中
在docker run命令中增加: -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime
保存后push代码,重新发布最新的代码至服务器,此时去jenkins 系统信息中可以看到
user.timezone Asia/Shanghai
第四步:验证问题是否得以解决,job是否按设置的时间执行
经验证,确实按设置的时间执行job。