關於這個問題的解決方法,阿舍的想法很簡單,因為,阿舍的這幾個 Container 的 Image 都是自己 Build 的,所以,阿舍就在 Dockerfile 裡多加上時區的設定就可以搞定了,這個看來不是什麼大問題,不過,後來,阿舍想想,好像不太對,如果阿舍今天用的是別人弄好的 Docker Image 的話,那是不是都要再用 Dockerfile 的方式來自己再包一次 Imgae,這樣會不會太麻煩了哩 ...
嗯 ! 阿舍查了一下,果然,有不少人有跟阿舍一樣的問題,所以,當然就會有更簡單的解決方式哩 ! 解決的方法總共有二種,是在 Docker 用 run 指令啟動 Container 的時候,分別利用下面所列的 -v 選項和 -e 選項來連結檔案或設定環境變數的方式來達成的。
方法一
-v /etc/localtime:/etc/localtime:ro
方法二
-e "TZ=Asia/Taipei"
阿舍是在用 Alpine Linux 包成的 Image 試了上面二種方式,結果,只有第一種方式可行,阿舍查了一下,是因為 Alpine Linux 還需要安裝額外的套件才可使用,但是,阿舍看了網路上的討論,似乎很多人是用第二種方式成功的人比較外哩 ! 所以,如果有需要的話,阿舍建議兩種都給他試一下,然後,再選一種自己喜歡的方式或可以用的方式哩 ...
好,那設定好之後要怎知設定有沒有成功和生效呢 ? 這個的話,就請參考阿舍寫的這一篇來進入這個 Docker Conatiner 的終端畫面來執行 date 指令,這樣就可以看到 Container 裡的時間對不對了哩 ...
另外,阿舍要補充的就是,如果你是用上面的方法一的方式的話,要記得確定你的 Host 是不是在 /etc 下有 localtime 這個檔案,如果沒有的話,那就要改用方法二,而如果不幸都不行,那就只能利用 Dockerfile 來先在 Image 就設定好和 Host 相的時區,不過,當把這個 Image 換到不同時區的 Host 來執行時,就會需要重新 Build Image,可攜性就大大的降低了哩 ...
推薦閱讀
- 問題沒解決嗎? 更多的 Ubuntu 教學在 這裡
- Prompt Injection: 提示詞注入安全漏洞
- 二款 Mac 無痛安裝的 Stable Diffusion 軟體
- 用 AI 寫部落格文章好不好 ?
- 沒有免費的 Midjourney 和 Colab 又不想花錢怎麼辦 ?
- 不學 Prompt 技巧也能善用 ChatGPT 的簡單方法
- 企業 AI 應用:不只是聊天機器人
- Automatic 比 Automatic1111 更好用 ? 都是 Stable Diffusion WebUI
- Stable Diffusion 的 /describe 圖生文功能
- AI 畫出讓人可怖的美圖 !
有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁
2 則留言 :
請問,如果用這兩種方法都沒用呢?我用docker-compose 弄了一個librenms出來,可是一直沒辦法改tzdata
也已經改了docker-compose.yml的內容如下
web:
image: jarischaefer/docker-librenms
hostname: librenms
ports:
- "8001:80"
- "44301:443"
volumes:
- /etc/hosts:/etc/hosts
- /etc/localtime:/etc/localtime:ro
environment:
- TZ="Asia/Taipei"
這個問題是在compose file 中設置變數不要加雙引號
environment:
- TZ=Asia/Taipei
張貼留言
歡迎留言提問和討論 .... 😁