Dockerfile打包镜像之修改默认时区
目录
问题背景
前一段时间项目上用dockerfile创建了应用镜像,等服务跑起来后,某些功能接口怎么都调不通,经过排查发现原来是镜像的时间不对。
总结
打包镜像时使用的基础镜像基本上都是采用UTC(格林时间),与我们常用的北京(上海)时间(CST)相差8个小时。所以在dockerfile中要预置好默认时区。
以下统一为:北京时间,位于东八区。时区代号: Asia/Shanghai
Ubuntu
ENV TIME_ZONE Asia/Shanghai
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
&& apt-get update
&& apt-get install -y tzdata
&& ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
&& dpkg-reconfigure -f noninteractive tzdata
&& apt-get clean
&& rm -rf /tmp/* /var/cache/* /usr/share/doc/* /usr/share/man/* /var/lib/apt/lists/*
Centos
ENV TIME_ZONE Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime
Alphine
RUN apk add --no-cache tzdata
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo "Asia/Shanghai" > /etc/timezone
&& apk del tzdata