如何同步在 docker 容器上运行的 java 应用程序的时间?
Posted
技术标签:
【中文标题】如何同步在 docker 容器上运行的 java 应用程序的时间?【英文标题】:How to sync the time of a java application running on docker container? 【发布时间】:2016-04-04 16:43:31 【问题描述】:我是这样的docker文件:
FROM anapsix/alpine-java:jre8
ADD service-god-sac-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-Xmx64m", "-XX:MaxMetaspaceSize=64m", "-jar", "/app.jar"]
当我编译和部署应用时,使用这个设置时间:
-v /etc/localtime:/etc/localtime:ro
我注意到主机时间和容器时间是同步的,但是应用程序的日志显示了不同的时间,即 UTC 时间。 如何同时同步主机、容器和 java 应用?
【问题讨论】:
您可能对此讨论感兴趣:github.com/docker/docker/issues/3359 【参考方案1】:映射本地时间和时区效果很好。
例子:
docker run -d -v /var/lib/elasticsearch:/var/lib/elasticsearch -v /etc/localtime:/etc/localtime:ro -v /usr/share/zoneinfo/America/Buenos_Aires:/etc/timezone:ro -p 80:80/tcp -p 9200:9200/tcp -p 514:514/udp petergrace/elk
【讨论】:
以上是关于如何同步在 docker 容器上运行的 java 应用程序的时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式(在 Docker 上)获取运行容器的容器 ID?
如何让 Java 测试容器在 Docker 多阶段构建中工作?