Dockerfile打包镜像之修改默认时区

目录

问题背景

总结

Ubuntu

Centos

Alphine


问题背景

前一段时间项目上用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