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

本文记录了解决Docker容器内Tomcat部署的应用显示时间与数据库时间不一致的问题。通过修改Tomcat的启动脚本设置时区,并调整容器内时区,成功使两者时间同步。步骤包括在`catalina.sh`添加`-Duser.timezone=GMT+08`参数及修改容器内时区为`Asia/Shanghai`。
摘要由CSDN通过智能技术生成

问题

  今天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,找到下面这一行

 再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命令,发现时区已经做了修改,容器内部时间和北京时间一致。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值