測試時發現以 openjdk-8-jdk-alpine 為基礎鏡像制作的鏡像有時區問題。查資料知道 alpine 本身不帶時區信息。按以下方法修改后正常獲取時間。
一、掛載宿主機的時區到容器
啟動命令增加參數 -v /etc/localtime:/etc/localtime
啟動容器,進入查看時間正常,時區也已同步。但java應用獲取的時間還是差8小時。
繼續查找資料 java 獲取時區與 linux 系統時區的不同 參考博客
二、設置容器內時區
通過后來不斷嘗試,修改 localtime 確定無效,最后采用笨方法,制作應用鏡像時,通過 shell 修改時區
Dockerfile 中增加修改時區的命令 echo "Asia/Shanghai" > /etc/timezone
通過測試,jdk 中或正常獲取設置的東8時區。但還有一個遺留問題,使用 springboot 啟動項目,打印出來的時間時間還是默認時區,而應用中獲取的時間都是正常的時間。暫且記下,有時間再細看