我有一个docker-compose文件运行一些Dockerfiles来创建我的容器.我并不想修改自己的Dockerfiles设置时区,因为他们可以通过我的团队成员随时更改,我有一个码头工人,compose.override.yml文件,以使当地环境的变化.但是,我的一个容器(基于Selenium的容器)似乎没有拉出主机时区,这对我来说是个问题.基于此我想在我的所有容器上强制执行时区.我现在在我的Dockerfiles中
ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Run Code Online (Sandbox Code Playgroud)
一切正常.如何在docker-compose语法中复制相同的命令?
我有一个mysql 5.7 docker容器.当我运行mysql命令时:
SELECT now();
Run Code Online (Sandbox Code Playgroud)
它显示了我当前时间-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
Run Code Online (Sandbox Code Playgroud)
当我浏览容器内的文件时,文件custom.cnf
就在那里.在该文件中,我尝试了一些我找到的解决方案:
[mysqld]
default_time_zone='Europe/Sofia'
Run Code Online (Sandbox Code Playgroud)
或者是一个不太优雅的妥协解决方案,因为该区域必须每年更换两次(夏季/冬季):
[mysqld]
default_time_zone='+03:00'
Run Code Online (Sandbox Code Playgroud)
但都没有用.我感觉这个文件根本没有被mysql加载,因为如果我尝试将无效配置放在那里也没有任何事情发生(容器正常启动).有什么建议吗?