使用docker容器的错误时间戳:时区设置无效

Posted

技术标签:

【中文标题】使用docker容器的错误时间戳:时区设置无效【英文标题】:Wrong time stamp using docker container: time zone setting has no effect 【发布时间】:2020-10-08 12:21:18 【问题描述】:

技术栈是 Spring Boot 2.2.5.RELEASE、JPA with Hibernate、Java 8、mysql 5.7.31。 有些数据库字段包含像 2020-11-26 14:00 这样的时间戳,因此没有时区。

在 Windows 上运行 Spring Boot 应用程序和 MySQL 数据库(没有任何 docker 参与),没有问题。

但是,当 Spring Boot 应用程序在 macOS(directy)和 docker 容器内的 MySQL 数据库上运行时,时间戳(从数据库读取后)的值错误(2020-11-26 13:00)(我使用这个一:https://hub.docker.com/_/mysql -> 5.7.31)。 我可以通过在 application.properties 中设置时区来解决这个问题:

spring.datasource.url=jdbc:mysql://$MYSQL_HOST:localhost:3306/<mydb>?serverTimezone=Europe/Berlin&sessionVariables=sql_mode='...

我还在管道 (gitlab.com) 中使用 Spring Boot 和 docker 容器中的 MySQL 数据库运行应用程序。更具体地说,它们在单独的容器中运行。现在时间戳错误的问题再次出现。通过 spring.datasource.url 设置的时区似乎没有效果。

【问题讨论】:

【参考方案1】:

docker 容器的时区设置不正确。

variables:
  TZ: "Europe/Berlin"

.gitlab-ci.yml 中就可以了。

【讨论】:

以上是关于使用docker容器的错误时间戳:时区设置无效的主要内容,如果未能解决你的问题,请参考以下文章

docker学习16-Docker 容器设置时区

解决Docker容器时区及时间不同步问题

Docker时间与时区设置总结

docker 解决容器时区时间不一致

Docker时区timezone问题

收到错误“功能周(没有时区的时间戳)不存在”