关于Docker部署java应用时间和系统时间不匹配的问题
2017-08-16 21:27
531 查看
关于Docker部署java应用时间和系统时间不匹配的问题
问题与解决方法
使用Docker镜像进行服务器部署,在这之前没有接触过Docker只是听说过,当自己真的要去部署使用时很忐忑,因为怕出问题嘛(^~^)!好啦,接下来下说下具体问题。具体问题是酱紫的,在项目运行期间遇到数据库存储的时间与实际时间不符合,相差了八小时。出现这个问题,我第一反应就是镜像中的时间不对,所以就讲服务器时间映射进了容器了,当我映射完成后,进入容器看了下容器的时间确实就好。本以为酱紫配置后就能够完工了,万万没想到还是有这个问题。
# 映射服务器时间到容器 volumes: - /etc/localtime:/etc/localtime
所有就接着去想问题,将问题定位到了jvm虚拟机上,怀疑是否是jvm获取的时间是服务器时间,或者jvm自己做了什么骚操作导致了java应用程序中获取的时间不对。在网上查了很多资料有很多方法:
1:在程序中使用java的函数设定时区。
2:在启动java程序时加参数-Duser.timezone=GMT+8
(注:此处参考
通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?)
但这个方法别没有解决我的问题,就接着去找寻我要的答案。终于找到一个可靠的解决方案,解决了我的问题。不过遗憾的事那篇文件的连接找不见了。
接下来说下解决思路和方法: 1:先写了一段打印时间的程序,并进入容器去测试容器中java应用获取的时间。
import java.util.Date; public class TestDate { public static void main(String[] args) throws Exception { System.out.println(new Date()); } }
root@f2613436eb8c:/# date Wed Aug 16 20:44:02 CST 2017 root@f2613436eb8c:/# java TestDate Wed Aug 16 12:44:08 UTC 2017 root@f2613436eb8c:/# cat /etc/timezone Etc/UTC
2: 发现时区不对就将服务器的时区到容器的时区。(Docker 配置如下)
volumes: - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone:ro
3:修改后再次进入容器去查看时间是否合适。
root@8b45916bd1a3:/# date Wed Aug 16 20:51:22 CST 2017 root@8b45916bd1a3:/# java TestDate Wed Aug 16 20:51:33 CST 2017
确实修改完以后就真的合适了,为此感到很开心。到此该问题就算解决了,然后屁颠屁颠的就去吧Docker的各种映射都去加上。
感慨
可能这个问题对于有经验的人来说并不是什么特别大的问题,但对于我而言遇到这个问题,并且花费了不少时间去解决他。对自己是一个很大的进步,所以突然之间就想把这个问题记录下来。发表的原因第一个是因为想把问题记录下来,万一下次还遇到此类问题,能够有效快速得到解决;第二个原因也是希望将自己的成长之路一步步记录下来。这是我发表的第一个博客,以后如果遇到自己感觉好的或者是有帮助的问题或者学习心得,也会试着去记录他。可能在多年以后再次回顾此博客等会觉得这时候的自己很菜吧!哈哈哈!!!相关文章推荐
- 关于docker部署javaweb应用的问题
- 关于docker部署javaweb应用的问题
- 一个小的知识点关于java获取系统时间的问题
- 关于如何在docker中利用tomcat和MySQL容器部署java web应用的详细步骤
- linux java/jsp 获取系统当前时间问题
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- 关于Visual Studio .NET 2003 安装时“系统组件不匹配”问题的解决
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决 - ghostgarlic的专栏 - CSDNBlog
- java 关于秒数转换为格林日期时间问题
- 关于linux系统和tomcat时间不一致的问题
- 今日随想——关于企业级应用中分布式架构设计中系统通讯问题
- 关于系统时间的几个问题
- 关于系统时间格式的问题
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决
- 关于java EE 中Hibernate 应用在MyEclipse 中创建对SQL Server 2005的连接问题
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- Discuz!NT 3.5.2 关于不能在64位系统部署问题彻底解决办法
- 关于ClickOnce无法更新/Upgrade/下载 应用系统最新版本的问题和解决方法
- JAVA获取系统时间的问题
- java中系统时间错误的问题