Docker 啟動時設定時區 以 .NET Docker images 為例

最近又一次遇到了以前就處理過的問題,找了一圈發現沒有留下筆記,於是快點記錄下來。

背景

我們團隊會使用 Jenkins 將 Github 的程式碼抓下來自動部屬在 Docker 上,但是發現時區不正確。 由於本專案目標客群皆在同一時區,故只要解決 docker 上的時區,使其與 Linux 伺服器的時區同步即可。

每年(?)都在和 Linux 打交道的我馬上想到設定時區就好了,調整完成後 commit,靜待部屬成功、客戶滿意的佳音。但... 測試時發現時區根本就沒有改啊! 於是放著先處理其他更優先的事項,過了幾天後想到,阿!該不會是微軟官方提供的 .NET Docker image 太乾淨,沒有安裝 tzdata ?

急急忙忙修改 dockerFile 後終於是正確的時區了!

解決方式

其實很簡單,只要在 DockerFile 中加入下面三行即可!
    
RUN apt update
RUN apt install tzdata
ENV TZ=Asia/Taipei
    

話說,最下面的那行設定環境變數的部分,筆者是比較喜歡在建立容器(docker run) 的時候以附加參數的方式帶入,這樣萬一有幸可以接到其他時區的專案時就可以只修改執行語法即可,而不用再去調整 dockerFile
    
docker run -e TZ=Asia/Taipei
    


參考資料:
docker.doc - docker run

留言