今天在系統(tǒng)集成測試時由測試人員提交了一個測試bug,原因是提交業(yè)務(wù)數(shù)據(jù)時間與實際時間(北京時間)有偏差,導(dǎo)致統(tǒng)計異常。由于我們集成測試是向測試人員直接提供完整的Docker鏡像作為測試環(huán)境,原因應(yīng)該是出在容器時間設(shè)置上。
拿到交付的docker鏡像后,啟動后進(jìn)入容器控制臺,使用date命令查看果然時間不正確。再查看宿主機時間是正確,這樣肯定是容器啟動時未將時區(qū)與宿主機保持同步了,由于測試鏡像是由dockfile直接構(gòu)建,因此問題基本了定準(zhǔn)在dockerfile文件上了。
打開dockerfile檢查后發(fā)現(xiàn)確實確失與宿主機時區(qū)同步設(shè)置。故在此將如何添加時區(qū)同步過程記錄一下,同時給遇到過類似問題的同學(xué)以借鑒:
以下以Alpine制作的docker鏡像為例(也是我們的測試鏡像):
1 Dockerfile修改
1.1 增加安裝tzdata包
在安裝包時安裝tzdata安裝包,并且在構(gòu)建成功后不能清理此安裝包
/
#安裝tzdata安裝包
&& apk add --no-cache tzdata \
1.2 增加時區(qū)配置
安裝此安裝包后,會在/usr/share/zoneinfo目錄下生成各時區(qū)配置信息,Alpine目錄并無timezone及l(fā)ocatime配置,此時我們需要將時區(qū)值覆寫至Alpine的timezone及l(fā)ocaltime配置中,命令如下:
``` RUN \ ... #安裝tzdata安裝包&& apk add --no-cache tzdata \ #設(shè)置