mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像
时间: 2024-03-01 14:50:22 浏览: 110
可以通过Dockerfile手动创建MySQL 5.7主从镜像,以下是一个示例Dockerfile:
```
# 基础镜像
FROM mysql:5.7
# 设置MySQL的root用户密码
ENV MYSQL_ROOT_PASSWORD=yourpassword
# 复制MySQL配置文件到镜像中
COPY ./my.cnf /etc/mysql/my.cnf
# 设置容器启动时执行的命令
CMD ["mysqld"]
# 在容器中创建一个新的MySQL用户
RUN mysql -e "CREATE USER 'replication'@'%' IDENTIFIED BY 'yourpassword';"
# 授权主从复制权限
RUN mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';"
# 开放MySQL默认端口
EXPOSE 3306
```
在上面的Dockerfile中,我们通过`ENV`命令设置了MySQL的root用户密码,通过`COPY`命令复制了MySQL配置文件到镜像中,通过`RUN`命令创建了一个新的MySQL用户,并授权主从复制权限。
在构建镜像时,可以使用以下命令:
```
docker build -t mysql57 .
```
其中,`.`表示当前目录中的Dockerfile。
构建完成后,可以使用以下命令启动MySQL主从容器:
```
docker run -d --name mysql-master -p 3306:3306 mysql57
docker run -d --name mysql-slave -p 3307:3306 mysql57
```
其中,`--name`指定容器名称,`-p`指定端口映射。
启动容器后,可以使用以下命令进入MySQL主容器:
```
docker exec -it mysql-master mysql -uroot -p
```
其中,`-it`表示交互式终端,`-uroot`表示以root用户身份登录MySQL,`-p`表示输入密码。
进入MySQL后,可以创建数据库和表,并进行数据操作。在主容器中,还需要执行以下命令,获取binlog信息:
```
mysql> show master status;
```
在从容器中,可以使用以下命令配置主从复制:
```
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='replication',
MASTER_PASSWORD='yourpassword',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001', # 这里的值根据主容器中的binlog信息修改
MASTER_LOG_POS=154; # 这里的值根据主容器中的binlog信息修改
```
其中,`MASTER_HOST`指定主容器的主机名或IP地址,`MASTER_USER`指定主从复制用户,`MASTER_PASSWORD`指定主从复制用户密码,`MASTER_PORT`指定主容器的端口号,`MASTER_LOG_FILE`和`MASTER_LOG_POS`指定从容器应该从哪个binlog位置开始复制数据。
最后,可以使用以下命令启动从容器的MySQL服务:
```
mysql> start slave;
```
这样,就完成了MySQL 5.7主从复制镜像的构建和配置。
阅读全文