要求: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实例程序时区】的更多相关文章

  1. 在 CentOS7 上部署 MySQL 主从

    在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...

  2. 在Docker Swarm上部署Apache Storm:第2部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  3. 在Docker Swarm上部署Apache Storm:第1部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  4. 在CentOS7上部署Kubernetes集群

    在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...

  5. 在阿里云ECS CentOS7上部署基于MongoDB+Node.js的博客

    前言:这是一篇教你如何在阿里云的ECS CentOS 7服务器上搭建一个个人博客的教程,教程比较基础,笔者尽可能比较详细的把每一步都罗列下来,包括所需软件的下载安装和域名的绑定,笔者在此之前对Linu ...

  6. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  7. CentOS7上部署ASP.Net Core 2.2应用

    前言 在CentOS7上部署ASP.Net Core应用是我的技术路线验证的一部分,下一个产品计划采用ASP.Net Boilerplate Framework开发.因此需要求提前进行一下技术验证,在 ...

  8. (转)Centos7上部署openstack ocata配置详解

    原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124  文章-2  评论-82  Centos7上部署openstack ocata配置详解 ...

  9. centos7上部署dubbo管理控制台dubbo-admin

    centos7上部署dubbo管理控制台dubbo-admin 1 准备工作 服务器:系统centos7, 内存4G, 存储60G, ip 192.168.159.128 软件环境: 安装有jdk1. ...

随机推荐

  1. java 基础类库之 FormatFun

    package com.exjor.webdemo; import java.text.SimpleDateFormat; import java.util.Date; public class Fo ...

  2. Kylin使用笔记-0: kylin介绍

    APACHE KYLIN™ 概览 Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发 ...

  3. HDU 3530 单调队列

    题目大意:给你n个数, 让你问你最长的满足要求的区间有多长,区间要求:MAX - MIN >= m && MAX - MIN <= k 思路:单调队列维护递增和递减,在加入 ...

  4. 2015 icpc北京赛区 D 最小割

    题目大意:给你一棵技能树,如果要学习一个技能,那么它之前的技能要全部学完,第 i 个点需要ai 能学习 每条边有一个消耗c 如果支付c那么就能去掉这条边, 你还可以kejin 花费di 就能直接学习 ...

  5. 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式

    [状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略, ...

  6. c++ 栈(顺序表)

    栈可以用顺序表(数组)也可以用链表来储存内容,本文采用顺序表(数组)来保存内部元素.代码如下:  1 #include <iostream> 2 using namespace std; ...

  7. zoj-1610线段树刷题

    title: zoj-1610线段树刷题 date: 2018-10-16 16:49:47 tags: acm 刷题 categories: ACM-线段树 概述 这道题是一道简单的线段树区间染色问 ...

  8. 不改源代码,修改服务器配置,解决全局Get中文乱码问题

  9. [leetcode trie]211. Add and Search Word - Data structure design

    Design a data structure that supports the following two operations: void addWord(word) bool search(w ...

  10. js中对同步和异步的理解

    你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流 ...