本文主要記錄在使用 Alpine 鏡像時(shí)如何解決時(shí)區(qū)問題。
首先創(chuàng)建一個(gè)基礎(chǔ)的鏡像用于測試:
from alpine:latest
- 構(gòu)建鏡像:
docker image build -t alpine-test . - 啟動(dòng)容器并進(jìn)入終端:
docker run --name alpine -it alpine-test:latest
容器內(nèi)執(zhí)行 date -R,輸出:Wed, 01 Sep 2021 02:43:24 +0000,發(fā)現(xiàn)不是中國時(shí)區(qū)。
容器已啟動(dòng)
在容器已啟動(dòng)的情況下,可以通過安裝 tzdata 來設(shè)置時(shí)區(qū)。
apk add -U tzdatacp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
再次測試,輸入期望結(jié)果:Wed, 01 Sep 2021 10:48:07 +0800。
最后刪除時(shí)區(qū)文件:apk del tzdata
編寫鏡像時(shí)設(shè)置時(shí)區(qū)
from alpine:latest
ENV TZ Asia/Shanghai
RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone \
重新構(gòu)建鏡像并測試,時(shí)區(qū)設(shè)置正常。在有的教程里面最后會(huì)添加刪除時(shí)區(qū)文件的命令,但是經(jīng)過測試,添加該命令后時(shí)區(qū)設(shè)置會(huì)失效。