docker 从入门到放弃—5. docker sprintboot 日志时区不对

解决方案

方案1,
最傻瓜也最方便的处理方式(可能日志任然不对,系统的时间对了)

docker run -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -ti centos bash
以上将宿主机的时间与本地时间绑定到容器中,这样时间就会跟宿主机一样了。

/etc/timezone 时区
/etc/localtime 时间

验证时间是否正确,在控制台输入以下命令即可

date

方案2

CentOS镜像在Dockerfile 中添加一行命令

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

方案3

终极解决方案,在以上设置完系统的时区后仍然不生效
springboot项目设置时区
    @PostConstruct
   void setDefaultTimezone() {
      TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
//    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
   }

用任何一个都行,将默认时区设置为东八区。

应用场景:有时候应用服务器的时间是UTC协调世界时间,在我们用浏览器访问的时候,就会出现日期快八小时,

因为服务器的时区跟我们东八区差八个小时导致的,用以上方法可以解决这个问题