使用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容器的错误时间戳:时区设置无效的主要内容,如果未能解决你的问题,请参考以下文章