docker mysql设置时区_Docker 中 MySQL容器时区不对,导致插入的时间不准确
时间: 2024-05-16 14:16:09 浏览: 125
Docker的MySQL容器时区问题修改
在 Docker 中,MySQL 容器的时区默认为 UTC 时区。如果您希望设置容器时区为本地时区,则可以通过以下步骤进行设置:
1. 创建一个新的 Dockerfile 文件,内容如下:
```
FROM mysql:latest
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
```
其中,/usr/share/zoneinfo/Asia/Shanghai 是您所在地区的时区,可以根据实际情况进行修改。
2. 在终端中执行以下命令,构建新的 Docker 镜像:
```
docker build -t mysql-tz .
```
其中,mysql-tz 是您自定义的镜像名称。
3. 在终端中执行以下命令,启动 MySQL 容器并挂载数据卷:
```
docker run -d -p 3306:3306 --name mysql -v /path/to/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql-tz
```
其中,/path/to/data 是您本地存储数据的路径,password 是您设置的 MySQL root 用户密码。
4. 进入 MySQL 容器,并修改 MySQL 时区设置:
```
docker exec -it mysql bash
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
```
其中,mysql_tzinfo_to_sql 命令会将 /usr/share/zoneinfo 文件夹下的时区信息转换为 SQL 语句,然后通过管道符号将 SQL 语句传递给 MySQL 客户端进行执行。
5. 重启 MySQL 容器:
```
docker restart mysql
```
6. 现在,您可以在 MySQL 中插入本地时间了。例如:
```
INSERT INTO mytable (timestamp) VALUES (NOW());
```
以上就是设置 Docker 中 MySQL 容器时区的方法。希望对您有所帮助!
阅读全文