背景
springboot项目
dockerfile配置alpine-jdk8基础镜像
问题
服务启动,发现返回的服务数据和日志显示晚了8个小时,容器内执行date -R,系统时区不是东八区。
第一种方案
后知Docker Store 上的官方镜像基本上都默认是 UTC 时区,需要手动设置一下。
docker run --name umsp -d -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -p 8081:30800 umsp:3.6.6
运行服务把宿主机的时间设置挂载到容器里面,这样时间就会跟宿主机一样了。/etc/timezone 时区 /etc/localtime 时间
通过执行date -R验证容器时区已改为东八区。但是返回的数据和日志还是和宿主机不一致。
后面看文章说这种方案需要注意/etc/timezone内容,因为代码中会用到这个设置,也要改成上海时区,还没验证。
第二种方案
如果你不想新建镜像或者重启 container,那么也可以直接进入 容器修改TZ
环境变量。执行:
1 2 |
echo "Asia/Shanghai" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata |
以上是 Ubuntu 修改时区的命令。如果你的自定义镜像使用的是其他发行版,需要使用指定命令。
第三种方案
只需要在 Dockerfile 中加入下面两句就可以了: