有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java更新dockercontanier jre时区

根据这里 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

就像我在本地做的那样

操作系统是ubuntuWelcome 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的开始选项


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    1. 您需要运行tzupdater。容器内的jar(docker exec-it container_id bash,然后执行更新程序),因为容器有自己的jre
    2. 您还需要使用更新的jre构建新的docker映像,该映像将包含最新的基于文件的时区数据库(https://www.iana.org/time-zones <> LI>如果对所有时区都有准确的时区偏移量,请考虑使用时区WebService。见here