docker 时区

最早碰到时区问题是 发布SPRING BOOT 应用时发现的 发现网关调阅总是提示超时.

按"网上教程",

docker exec -it cloud-app date -R

显示 +0000 时间也差了 8小时 于是 某度 解释有如下几种

1)java 启动参数 加入 

  -Duser.timezone=GMT+08

2) 在BUILD docker 时 加入

     RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

 或者干脆把 本地的 /etc/localtime COPY 到容器内的等等。发现都不靠谱。于是耐心分析原因.

首先应用 依赖JDK  ,本例中应用的是 alpine-openjdk8  找到Dockerfile 发现基于 alpine;

再次找到 alpine:3.9 Dockfile 

发现根本没安装 tzdata  于是改造 alpine:39  Dockerfile 内加入

# 设置时区为上海

RUN apk add tzdata&& cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime  && echo"Asia/Shanghai" > /etc/timezone 

然后根据 OPENJDK 的配置 修改一下依赖为 带时区的版本 。

    其它应用 如 mysql/redis/nginx/mongodb等均有同样的问题  注意各镜像有的基于 alipine 有的基于 ubuntu 他们的安装软件命令各不相同

apk|yum|dnf|apt-get|

等等。可以先跑一个测试一下。再选择加入dockerfile 

你可能感兴趣的:(docker 时区)