【docker】centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致【修改mysql时区,临时和永久】【修改spring boot配置文件时区】【修改docker启动spring boot实例程序时区】
要求:centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致;
===============================================================================
一共五步:
前提:修改宿主机的localtime和timezone文件的内容
1.查看宿主机时间
2.修改mysql时区【有临时和永久修改两种方式】
3.修改spring boot配置,增加时区设置
4. 修改docker启动spring boot服务命令,设置java程序时区
================================================================================
前提:
首先,修改宿主机/etc/localtime 文件,只要保证文件中的时区设置是CST-8 即可
【乱码问题不用管,只需要保证文件中时区设置是CST-8即可】
vi /etc/localtime

接着,修改宿主机的/etc/timezone 文件,保证文件中内容如下:
Asia/Shanghai
可能/etc目录下并没有timezone 文件,而是timezone 目录,把timezone 目录删掉,创建timezone 文件,并粘贴上面的内容即可。

关于【GMT,UTC,DST,CST, ISO时间的区别,可以自己查询了解】
================================================================================
1.首先确定 查看宿主机的时间
date

2.docker启动mysql在宿主机上后,使用navicat连接mysql后,查看mysql时间【docker启动mysql实例:https://www.cnblogs.com/sxdcgaq8080/p/9199406.html】
select now();

可以看到mysql虽然是运行在宿主机上,但是时间并不正确,相差了8个小时。
========================================临时生效,重启失效================================================
解决方法:依次执行如下三个语句在navicat中【修改时区】【注意;号不要丢】
> set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = '+8:00'; ##修改当前会话时区
> flush privileges; #立即生效
执行完成再查看时间:【时区修改完成】

=====================================永久生效=================================================
当然以上的方法只是临时的修改了mysql的时区,如果重启mysql以后,就会失效
想要永久解决这个问题,可以通过修改docker启动mysql命令 加参数即可解决【红色部分需要保证文章的前提部分已经做了】【红色参数意义:https://www.cnblogs.com/sxdcgaq8080/p/10065068.html】
docker run -p 33061:3306 --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=pisen -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro -d mysql:5.7
3.为了保证spring boot服务本身java程序没有问题。
需要在配置文件application.properties中增加配置:
spring.jackson.time-zone=GMT+8
原因是因为:
spring-boot中对于@RestController或者@Controller+@ResponseBody注解的接口方法的返回值默认是Json格式,
所以当对于date类型的数据,在返回浏览器端是会被spring-boot默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。
4.最后,在打包了服务为jar包上传到服务器上后
使用docker部署,仅需要增加两个配置在启动命令,即可解决docker容器时区与时间的问题
对比一下【最简单的启动命令】
docker run --name swapping -itd --net=host swapping
增加时间配置【解决时区问题的启动命令】【红色部分需要保证文章的前提部分已经做了】
docker run --name swapping -itd --net=host -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro swapping
启动以后,访问宿主机时间:

进入docker容器,这个spring boot服务的实例中,查看时间

时间一致。
docker运行mysql+spring boot服务 保证三位一体时间一致的问题解决!!!!
【docker】centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致【修改mysql时区,临时和永久】【修改spring boot配置文件时区】【修改docker启动spring boot实例程序时区】的更多相关文章
- 在 CentOS7 上部署 MySQL 主从
在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...
- 在Docker Swarm上部署Apache Storm:第2部分
[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...
- 在Docker Swarm上部署Apache Storm:第1部分
[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...
- 在CentOS7上部署Kubernetes集群
在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...
- 在阿里云ECS CentOS7上部署基于MongoDB+Node.js的博客
前言:这是一篇教你如何在阿里云的ECS CentOS 7服务器上搭建一个个人博客的教程,教程比较基础,笔者尽可能比较详细的把每一步都罗列下来,包括所需软件的下载安装和域名的绑定,笔者在此之前对Linu ...
- 在 CentOS7 上部署 zookeeper 服务
在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...
- CentOS7上部署ASP.Net Core 2.2应用
前言 在CentOS7上部署ASP.Net Core应用是我的技术路线验证的一部分,下一个产品计划采用ASP.Net Boilerplate Framework开发.因此需要求提前进行一下技术验证,在 ...
- (转)Centos7上部署openstack ocata配置详解
原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124 文章-2 评论-82 Centos7上部署openstack ocata配置详解 ...
- centos7上部署dubbo管理控制台dubbo-admin
centos7上部署dubbo管理控制台dubbo-admin 1 准备工作 服务器:系统centos7, 内存4G, 存储60G, ip 192.168.159.128 软件环境: 安装有jdk1. ...
随机推荐
- Python学习笔记:一手漂亮的Python函数
使用类和函数定义模型 函数是抽象和封装的基本方法之一 重构函数 -- 命名合理 -- 具有单一功能 -- 包含文档注释 -- 返回一个值 -- 代码不超过 50 行 -- 幂等函数,尽可能 ...
- spring boot之org.springframework.boot.context.TypeExcludeFilter
曾经碰到过这样一种情况,想让某个使用了spring 注解的类不被spring扫描注入到spring bean池中,比如下面的类使用了@Component和@ConfigurationPropertie ...
- 黑马程序员_java基础笔记(03)...面向对象
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— 1:面向对象的概念,2 : 类和对象的关系,3 : 封装,4 : 构造函数,5 : ...
- Dubbo的静态服务
Dubbo中,dubbo可以自动搜索到服务上线,并注册,同时,也可以知道服务下线,自动从注册中心去掉服务. 但是静态服务就可以做到人工管理. 1.场景 有时候希望人工管理服务提供者的上线和下线,此时需 ...
- Failed to load JavaHL Library. SVN
以前使用的电脑是32位的,安装的svn可以正常使用,但是现在的电脑室64位的,安装好svn后,把项目提交到svn的过程中,总是弹出来一个错误的对话框: Failed to load JavaHL Li ...
- django 启动nginx的时候,报端口被占用的问题
Nginx [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use) Nginx更新后经常遇到这样 ...
- JZYZOJ 2002 [cf] 石江豪pk李震 博弈论 sg函数
http://172.20.6.3/Problem_Show.asp?id=2002 https://blog.csdn.net/qq_24451605/article/details/5015497 ...
- BZOJ 2653: middle 主席树 二分
https://www.lydsy.com/JudgeOnline/problem.php?id=2653 因为是两个方向向外延伸所以不能对编号取前缀和(这里只有前缀和向后传递的性质,不是实际意义的和 ...
- Android ContentObserver详解
前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对Content ...
- vijos p1876 bfs+map
题意: Xiaodao是一位喜欢参加ACM比赛的孩子. 所谓ACM比赛, 是一种团队比赛. 每一次比赛, 每队需要由恰好三位选手组成. 现在, Xiaodao希望组建一支新的队伍, 在这之前, 他需要 ...