通过docker启动的jenkins,发现使用的时区是UTC,而不是CST
由于启动容器时,没有将宿主机的时区文件挂载进去,所以容器内的时区默认是UTC,
所以尝试将修改容器内的时区
# 使用root用户进入
docker exec -u root -it jenkins1 /bin/bash
#进入后,将原有的localtime文件删除
rm -f /etc/localtime
#再重新链接时区文件
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改后查看:

然后发现jenkins并没有跟着修改,重启后,依然没有生效
后面在文档中看到相关的解决方案:https://wiki.jenkins.io/display/JENKINS/Change+time+zone
在jenkins的web页面,系统管理-脚本控制台 中执行
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
注:该解决方案在jenkins重启后,需要重新设置一次
咳咳,发现居然有人点了赞,那我就再更一下最新的永久解决办法吧
在docker run运行容器的时候,挂载当前主机的时区文件 -v /etc/localtime:/etc/localtime
docker run
-d --restart=on-failure:3
-v /etc/localtime:/etc/localtime
-v /var/log/gate:/logs
--name gate
-p 8888:8888
gate
网友评论