更新docker-contanier jre时区

根据这里https://stackoverflow.com/a/40416306/6804200

我更新了我的本地ubuntu jredate(osdate已经是真的)。 但是当我运行应用程序,date仍然是旧的。

我看着Docker中的应用程序服务器 – 与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))); 

带来错误的date。 这是一个小时前。

我需要去做

 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 。 我想改变代码内的东西,而不是开始改变docker的开始选项

在java中你不能说关于docker的问题,你可以在一些普通的类或者所有你创builddate对象的类中做下面的事情。

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

那么在Date dt=new Date();情况下Date dt=new Date(); 它将包含按照IST时区的date。

  1. 你需要在容器中运行tzupdater.jar(docker exec -it container_id bash,然后执行updater),因为容器有它自己的jre。
  2. 您还需要使用更新的jre构build新的Docker镜像,该镜像将包含最新的基于文件的时区数据库( https://www.iana.org/time-zones )。
  3. 如果您始终有准确的时区偏移是至关重要的,请考虑使用一些时区Web服务。 看到这里 。