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