本文主要记录在使用 Alpine 镜像时如何解决时区问题。
首先创建一个基础的镜像用于测试:
from alpine:latest
- 构建镜像:
docker image build -t alpine-test .
- 启动容器并进入终端:
docker run --name alpine -it alpine-test:latest
容器内执行 date -R
,输出:Wed, 01 Sep 2021 02:43:24 +0000
,发现不是中国时区。
容器已启动
在容器已启动的情况下,可以通过安装 tzdata 来设置时区。
apk add -U tzdata
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 \
重新构建镜像并测试,时区设置正常。在有的教程里面最后会添加删除时区文件的命令,但是经过测试,添加该命令后时区设置会失效。