Docker踩坑日記之修改容器時區
阿新 • • 發佈:2018-12-09
想必剛接觸Docker的同學直接run各種容器玩耍,或許直接投入使用,久而久之,就會發現資料庫的時間與我們現在時間整整差8個小時。為什麼會差8個小時,因為官方容器預設是UTF時區,我們這裡是差8個時區,也就是UTF8。
如何修改
修改應用或者資料庫時間(不推薦,治標不治本,直接省略)
容器內修改 (不推薦,重啟容器就無效,直接省略)
Run階段掛載宿主機localtime
docker run -d -v /etc/localtime:/etc/localtime java
這種方式可以解決重啟而不丟失時區問題,但是暴露多了一個掛載點,而且每次run都要記得加上這個。思考著能不能在映象上解決,答案是可以的。
Dockfile新增時區
RUN echo "Asia/Shanghai" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
這種方式就不用多一個掛載點,在容器內修改。但是但是,也是有問題的。有一些基礎映象是建立不了的,比如官方mysql映象。
Dockerfile定義環境變數
ENV TZ=Asia/Shanghai
究極終結版,可以規避上面所有問題。在Dockfile新增一個時區的環境變數,每次啟動容器就會讀取,改變失去,非常炫酷。
services: nginx: build: . environment: TZ: Asia/Shanghai
在DockerCompose裡可以這樣操作。
推薦最後一種,一行永逸~
不足之處,多多指教,謝謝大家~