Docker 处理时区问题

本文主要记录在使用 Alpine 镜像时如何解决时区问题。

首先创建一个基础的镜像用于测试:

from alpine:latest 
  1. 构建镜像:docker image build -t alpine-test .
  2. 启动容器并进入终端:docker run --name alpine -it alpine-test:latest

容器内执行 date -R,输出:Wed, 01 Sep 2021 02:43:24 +0000,发现不是中国时区。

容器已启动

在容器已启动的情况下,可以通过安装 tzdata 来设置时区。

  1. apk add -U tzdata
  2. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

再次测试,输入期望结果:Wed, 01 Sep 2021 10:48:07 +0800

最后删除时区文件:apk del tzdata

编写镜像时设置时区

from alpine:latest 

ENV TZ Asia/Shanghai

RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \

重新构建镜像并测试,时区设置正常。在有的教程里面最后会添加删除时区文件的命令,但是经过测试,添加该命令后时区设置会失效

参考资料

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

推荐阅读更多精彩内容