提问者:小点点

更新docker-contanier jre时区


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

我更新了我本地的ubuntu jre日期(os日期已经是真的)。但是当我运行应用程序时,日期仍然是旧的。

我在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)));

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

我需要做

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

就像我在本地做的那样。

OS是ubuntu。欢迎来到Ubuntu 16.04.1 LTS(GNU/Linux4.4.0-34-通用x86_64)

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

当project被应用时,大约有10 12个微服务。我想在代码中更改一些东西,而不是开始更改docker的启动选项


共2个答案

匿名用户

  1. 你需要在容器内运行tzupdater. jar(docker exec-itcontainer_idbash,然后执行updater),因为容器有自己的jre。
  2. 您还需要使用更新的jre构建新的docker映像,该映像将包含最新的基于文件的时区数据库(https://www.iana.org/time-zones)。
  3. 如果始终拥有准确的时区偏移量对您来说至关重要,请考虑使用一些时区网络服务。看这里。

匿名用户

不能说docker是在java你可以在下面的一些公共类或在所有类中创建日期对象。

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

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