【docker】centOS7上部署的mysql和spring boot服務,要求,mysql的時間、java程序服務的時間和宿主機的時間徹底保持一致【修改mysql時區,臨時和永久】【修改sprin

 

要求:centOS7上部署的mysql和spring boot服務,要求,mysql的時間、java程序服務的時間和宿主機的時間徹底保持一致;html

===============================================================================java

一共五步:mysql

  前提:修改宿主機的localtime和timezone文件的內容spring

  1.查看宿主機時間sql

  2.修改mysql時區【有臨時和永久修改兩種方式】docker

  3.修改spring boot配置,增長時區設置瀏覽器

  4. 修改docker啓動spring boot服務命令,設置java程序時區服務器

================================================================================app

 

前提:框架

首先,修改宿主機/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實例:http://www.javashuo.com/article/p-bumtqjbk-k.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命令 加參數便可解決【紅色部分須要保證文章的前提部分已經作了】【紅色參數意義:http://www.javashuo.com/article/p-wpnjskde-gh.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服務 保證三位一體時間一致的問題解決!!!!

相關文章
相關標籤/搜索