我有一个mysql 5.7 docker容器。当我运行mysql命令时:
SELECT now();
它显示的时间-3小时到我的当前时间(这是合乎逻辑的)。我想在配置文件中设置时区。遵循中的文档https://hub.docker.com/_/mysql/ 我在我的 docker-compose.yml
文件如下:
mysqldb:
image: mysql:5.7.21
container_name: mysql_container
ports:
- "3306:3306"
volumes:
- ./.docker/etc/mysql/custom.cnf:/etc/mysql/conf.d/custom.cnf
当我浏览容器中的文件时 custom.cnf
有。在该文件中,我尝试了一些解决方案,如:
[mysqld]
default_time_zone='Europe/Sofia'
或者一个折衷的解决方案,不太优雅,因为该区域一年必须更换两次(夏季/冬季):
[mysqld]
default_time_zone='+03:00'
但都不管用。我有一种感觉,这个文件根本不是由mysql加载的,因为如果我尝试将无效的配置放入其中,也不会发生任何事情(容器正常启动)。有什么建议吗?
3条答案
按热度按时间byqmnocz1#
值应该是
检查详细信息
但在重新启动mysql服务时,可能会出现这样的错误,因此在编辑custom.cnf文件之前,应该使用下面的命令。
6xfqseft2#
对我来说,我用的是keramatichttps://kitematic.com configure 通过点击mysql容器general并添加tz,指定当前时间显示列表https://en.wikipedia.org/wiki/list_of_tz_database_time_zones
干杯
dddzy1tm3#
所以你需要使用
Dockerfile
在这种情况下,请按如下方式处理这确保当mysql容器加载时,它将加载所有时区信息。现在您可以使用环境变量来使用它
环境变量
在配置文件中使用它是一个问题。当你启动数据库时,它会给你一个错误
这是因为它需要时区已经加载。也可以解决这个问题,但麻烦太多了。我将只使用环境变量,因为这意味着当容器启动时,时区已经设置好了。