利用docker來部署服務,經常遇到的一個問題是如何解決容器內的時區問題.
假設現在啟動的鏡像是tomcat:8.0.35-jre8
/*直接用宿主機器上的時區默認覆蓋容器內的時區配置文件即可,也就是跟宿主機器同樣的時區配置 */ # docker run -v /etc/localtime:/etc/localtime:ro --name=tomcat tomcat:8.0.35-jre8
但是我相信如果寫過java的人仍然發現通過java 中new Date()獲取到的仍然是容器默認的時區,而是宿主機器上的時區配置,因為java是通過獲取timezone來設置時間的。不廢話,繼續看以下命令:
/* 這里配置的環境變量 Asia/Shanghai就是我所需要的時區 */ # docker run -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro --name=tomcat tomcat:8.0.35-jre8