docker内安装tomcat部署程序时差问题(修改时区)

问题

  今天docker内安装了tomcat,然后部署了项目。项目存在一些列表页面,查看列表时发现显示的时间和数据库里的时间相差八个小时。第一反应是数据库连接时区没有指定,查看了配置文件发现是配置了"serverTimezone=Asia/Shanghai"时区的,然后感觉涉及到了知识盲区。上网搜了一下类型的问题,好多人都说是数据库里面的时区没有配对,然后搞了半天数据库里面时区已经改对了,但是页面显示的时间还是依旧和之前的相差八个小时。于是突发奇想,是不是因为tomcat里的时区不对?然后自己手动找了下,解决了此问题,再次做以记录。

1.修改tomcat文件

修改容器内 /usr/local/tomcat/bin/catalina.sh文件。

因为容器内不能用vim指令,所以我将文件复制到容器外,然后修改后再复制到容器内部。

docker cp containerName : /usr/local/tomcat/bin/catalina.sh ./catalina.sh

为了防止意外 先复制一份未修改过的配置文件

cp catalina.sh catalina1.sh

编辑catalina.sh,找到下面这一行

docker内安装tomcat部署程序时差问题(修改时区)_第1张图片

 再webresources后面添加上

-Duser.timezone=GMT+08

保存文件退出,然后将文件复制进容器中。

docker cp  ./catalina.sh containerName : /usr/local/tomcat/bin/catalina.sh

重启tomcat 发现页面显示的时间已和数据库中一直。

2.修改容器内时区

因为我在代码中还会调用服务器本地的时间,也就是会获取容器内的时间。可以进入容器内查看当前时间,发现还是和实际时间相差八个小时,也就是容器内的时间默认是CST标准时间。所以要对容器内部时间做一个调整。

1.查看容器内部时间。

date -R

2.修改当前容器时区

cd etc

mv localtime localtime_bak

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3.做完上面三个操作,再使用date -R命令,发现时区已经做了修改,容器内部时间和北京时间一致。

问题得以解决,再次做以记录。

你可能感兴趣的:(docker,tomcat,java)