更新docker-contanier jre timezone

时间:2016-11-04 08:30:26

标签: java intellij-idea docker

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

我更新了我当地的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.

当项目是app时,10 12 microservices左右。我想改变代码中的内容,而不是开始更改docker的启动选项

2 个答案:

答案 0 :(得分:1)

在java中你不能说是对于docker,你可以在下面的某个公共类或你创建日期对象的所有类中做。

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

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

答案 1 :(得分:1)

  1. 你需要在容器内运行tzupdater.jar(docker exec -it container_id bash然后执行更新程序),因为容器有它自己的jre。
  2. 此外,您还需要使用更新的jre构建新的docker镜像,该jre将包含基于最新文件的时区数据库(https://www.iana.org/time-zones)。
  3. 如果您始终拥有准确的时区偏移量至关重要,请考虑使用某些时区网络服务。见here