利用docker来部署服务,常常遇到的一个问题是如何解决容器内的时区问题.java
假设如今启动的镜像是tomcat:8.0.35-jre8docker
/*直接用宿主机器上的时区默认覆盖容器内的时区配置文件便可,也就是跟宿主机器一样的时区配置 */ # docker run -v /etc/localtime:/etc/localtime:ro --name=tomcat tomcat:8.0.35-jre8
可是我相信若是写过java的人仍然发现经过java 中new Date()获取到的仍然是容器默认的时区,而是宿主机器上的时区配置,由于java是经过获取timezone来设置时间的。不废话,继续看如下命令:segmentfault
/* 这里配置的环境变量 Asia/Shanghai就是我所须要的时区 */ # docker run -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro --name=tomcat tomcat:8.0.35-jre8
经过这样的启动方式,就是OK了。
固然聪明人确定不会本身每次都在启动的时候加这些配置,固然在基础镜像里面搞好咯。tomcat