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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018-01-15 更新 解决 : Java FontConfiguration Exception(安装 tt...
    donotlb阅读 11,850评论 0 5
  • 在给Java程序封装镜像时,使用的基础镜像动辄上百M,还需要每次部署的时候挂载时区等问题,不如自己封装一个镜像,供...
    Java架构学习者阅读 2,367评论 0 3
  • 参考 哔哩哔哩 官方电子书 环境 Centos 7.6 #未安装Centos7,可以参考这篇文章 Docker 1...
    假装我不帅阅读 798评论 2 0
  • 我在春天的山花烂漫中寻觅 寻觅一株凝了霜雪的梅 未果 我在夏天的炎炎烈日下寻觅 寻觅一颗沾了泥土的笋 未果 我在秋...
    封尘望阅读 387评论 0 0
  • 今天是开心的日子 起床:8:00 就寝:11:30 天气:晴 心情:开心 纪念日:无 任务清单 昨日完成的任务,最...
    三爷书院阅读 209评论 0 0