centos时区 & docker容器时区 & jvm时区问题 & logs时间错误

现象:

在通过部署项目到服务器时, 发现服务器和本地查询结果不一致, 服务器应用程序的log时间错误.
本地和服务器的log时间对比如下:

  • 服务器内docker容器的应用程序(JVM)的log时间:
2018-08-21 15:23:04.188 [http-nio-10021-exec-3] INFO  com.vdp.core.component.mongo.MongoService - DBName[gdcp],CollectionName[RTINFO],操作[查询query sort],查询出来的数量[0], 排序[{ "TIME" : -1}], 参数[{ "DEVCODE" : "LY16C1237G0001283" , "ShuChiCanData" : { "$exists" : false} , "TIME" : { "$gte" : { "$date" : "2018-03-25T00:00:00.000Z"} , "$lte" : { "$date" : "2018-03-25T00:03:00.000Z"}}}]   
  • 本地win10:
2018-08-21 23:22:59.380 [http-nio-10021-exec-1] INFO  com.vdp.core.component.mongo.MongoService - DBName[gdcp],CollectionName[RTINFO],操作[查询query sort],查询出来的数量[8], 排序[{ "TIME" : -1}], 参数[{ "DEVCODE" : "LY16C1237G0001283" , "ShuChiCanData" : { "$exists" : false} , "TIME" : { "$gte" : { "$date" : "2018-03-24T16:00:00.000Z"} , "$lte" : { "$date" : "2018-03-24T16:03:00.000Z"}}}]   

通过在启动jar时指定jvm的时区解决问题.

总结时区操作的如下方法:

修改centos7的时区:

查看系统的时区:

[root@localhost ~]# date  
Wed Aug 22 09:49:56 CST 2018  

CST是为美国、澳大利亚、古巴或中国的标准时间. 如果不是CST那么肯定时区错误. 再查看和当前时间是否一致, 如果不一致也可以判断为时区错误, 可以通过如下命令修改时区:

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

修改容器时区:

docker容器启动后, 可以通过命令:docker exec -it 64163d31888d bash进入容器, 容器时区不对, 通过在dockerfile添加如下配置解决:

    volumes:  
      - /etc/localtime:/etc/localtime  
    privileged: true  

完整的dockerfile实例如下:

version: '3'
networks:
  docker_vdp-network:
    external: true
services:
  dqs-servier1:
    image: XX.XX.187.150:8082/vdp/vdp-cloud-dqs:0.0.1
    networks:
      - docker_vdp-network
    volumes:
      - /etc/localtime:/etc/localtime
    privileged: true
    ports:
      - "10021:10021"

启动jar的时候指定时区:

在我们运行应用程序时,可能JVM的时区和系统的时区不一致, 那么在执行java -jar的时候添加参数-Duser.timezone=GMT+08.
下面的在dockerfile中启动应用程序的示例:

#docker search jdk找到的最小jdk基础镜像
FROM airdock/oracle-jdk
VOLUME /tmp
ADD vdp-cloud-dqs-1.0.0-SNAPSHOT.jar /app.jar
EXPOSE 10021
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08","-jar","/app.jar"]
posted @ 2018-08-22 10:10  lognxn  阅读(2996)  评论(0编辑  收藏  举报