2016-11-04 52 views
0

据此间 https://stackoverflow.com/a/40416306/6804200更新搬运工,contanier JRE时区

我更新我的本地Ubuntu的JRE日期(OS日期已经如此)。但是当我运行应用程序时,日期仍然是旧的。

我看着 Application server in Docker - war deployment with IntelliJ

https://runnable.com/docker/java/dockerize-your-java-application

在这里,但他们不这样做,因为我想要的。

我想改变容器的JRE它运行的应用程序

因为这

params.put("createdDate", persisted.getCreatedAt(). 
now(ZoneId.of(Constants.TURKEY_ZONE)). 
format(DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT))); 

带来了错误的日期。这是一个小时前。

我需要做的

java -jar tzupdater.jar -l file:///home/vegan/Downloads/tzdata2016g.tar.gz 

正如我在本地做。

操作系统是Ubuntu的。 Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64) 有这些图像

jhipster/jhipster-alerter 
jhipster/jhipster-console 
jhipster/jhipster-registry 
mongo rabibtmq, 
vimagick/pure-ftpd 
and our company image about 1.8 gb. 

周围有10 12 microservices当项目是应用程序。我想改变里面的代码的东西,而不是开始改变搬运工

+1

更新后,你有没有'泊坞窗commit'更新容器作为新的形象?请参阅文档https://docs.docker.com/engine/reference/commandline/commit/ – user2915097

+0

我没有在docker中做过,我为我的本地操作系统做过。不是码头工人。 docker exec -i -t ab6558034b40/bin/bash我去了里面,但如果我在里面做,它将是tha机器,而不是永久的图像。我认为图像mst被改变永久? – mark

+1

可能是这应该帮助 - http://stackoverflow.com/questions/22800624/will-docker-container-auto-sync-time-with-the-host-machine – Rao

回答

1

的启动选项不能说是由Java中,你可以在一些常见的类或在您创建日期对象的所有类别下做搬运工。

TimeZone.setDefault(TimeZone.getTimeZone("IST")); // IST is for timezone you want to set 

然后在Date dt=new Date();的情况下,它将包含按照IST时区的日期。

1
  1. 你需要在容器中运行tzupdater.jar(docker exec -it container_id bash,然后执行updater),因为容器有它自己的jre。
  2. 你也需要建立与更新的JRE将包含最新的基于文件的时区数据库(https://www.iana.org/time-zones)新泊坞窗图像。
  3. 如果您始终有准确的时区偏移至关重要,请考虑使用一些时区web服务。见here
+0

这是多个容器。他们应该为我做些什么?也许我应该首先检查当我执行如果有java?当应用程序启动时,我可以进入容器。而容器wrking,我怎么能扼杀所有的java来更新tz?因为在我的本地我这样做,杀死所有的java – mark

+1

如果java在你的本地机器上更新,那么它可能包含时区数据库更新。我认为你需要确定使用时区功能的应用程序/容器,并在该容器中运行tzupdater或在容器中升级java。另一种方法是用更新的java创建新容器。 –

+0

如何识别哪个容器? – mark