docker java 时间问题

首先上服务器执行date
发现是CST没问题

突然想起来用的是docker
进docker执行date
嗯果然是UTC

删除容器重新启动镜像并加上参数 -v /etc/localtime:/etc/localtime,再进去时区已经和本机一致是CST了

可是java获取的时区却还是UTC的

继续找资料。。。。

jre是通过配置文件读取本地时间的:/etc/timezone
所以把时区加进去:
echo "Asia/Shanghai" > /etc/timezone

以防万一重启了容器

 

但是java应用中产生的日志、数据库记录等时间依然是时区0的时间。

docker run --name tomcat -p 8080:8080 -v /opt/web/webapps:/usr/local/tomcat/webapps -v /opt/web/logs:/usr/local/tomcat/logs  -v /etc/localtime:/etc/localtime -d tomcat

docker中的java应用获取时间是从 timezone中获取,因此进入docker,修改timezone

docker exec -it tomcat /bin/bash

在docker中执行

echo "Asia/Shanghai" > /etc/timezone

cat /etc/timezone
 

 

你可能感兴趣的:(docker)