如何CentOS构建MySQL的docker镜像

前言

本文以构建MySQL5.7.35版本为例

1. 编写Dockerfile

# 使用官方 MySQL 5.7 镜像作为基础镜像
FROM mysql:5.7.35

# 设置 MySQL 环境变量
ENV MYSQL_ROOT_PASSWORD=P@ssw0rd
ENV MYSQL_DATABASE=cargodb
ENV MYSQL_USER=user
ENV MYSQL_PASSWORD=P@ssw0rd

# 复制自定义的初始化 SQL 脚本到容器中
COPY init.sql /docker-entrypoint-initdb.d/

# 暴露 MySQL 服务的端口
EXPOSE 3306

上述 Dockerfile 使用官方 MySQL 5.7.35 镜像作为基础,设置了一些环境变量,包括 root 用户的密码、数据库名、以及新建的用户和密码。它还将一个自定义的初始化 SQL 脚本 init.sql 复制到容器的 /docker-entrypoint-initdb.d/ 目录中,以在容器启动时执行

2.创建初始化 SQL 脚本

在你的项目目录下创建一个 init.sql 文件,用于定义初始化数据库的 SQL 语句。这里是一个简单的例子:

DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `admin_name` varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '账户名',
  `admin_nickname` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '昵称',
  `admin_password` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '密码',
  `admin_profile_picture_src` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '头像地址',
  `del` tinyint(1) NULL DEFAULT 0 COMMENT '删除标识(1删除 0未删除)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '管理员' ROW_FORMAT = Dynamic;

INSERT INTO `admin` VALUES (1, 'admin', 'admin', '123456', '86ed0506-be90-4808-89da-3b169973249a.jpg', 0);

因此在此容器运行后会自动创建好user用户,cargodb,并执行init.sql

3.构建 Docker 镜像

在包含 Dockerfile 和 init.sql 文件的目录下执行以下命令:

docker build -t mysql-5.7:5.7 .

此命令会根据Dockerfile文件生成一个name为mysql-5.7的image
在这里插入图片描述

4.运行 MySQL Docker 容器

执行如下命令:

docker run -d -p 3306:3306 --name mysql-5.7 -v /mysql:/var/lib/mysql  mysql-5.7:5.7

在这里插入图片描述

解释一下上述命令:

  • -d: 让容器在后台运行。
  • -p 3306:3306: 映射容器的 MySQL 端口到主机的 3306 端口。
  • –name mysql-5.7: 指定容器的名称为 mysql-5.7。
  • -v /mysql:/var/lib/mysql: 挂载主机上的 /mysq目录到容器中的 /var/lib/mysql 目录。这是 MySQL 数据目录的默认位置。

注意:执行此命令时确保iptables(firewalld)正常运行,否则可能会报错;
可以使用工具连接数据库,可以看到库和表都已经创建好了
在这里插入图片描述
同时/mysql目录下也有了MySQL的文件
在这里插入图片描述
注意:mysql挂载的目录不能有其他文件,否则会报以下错误
在这里插入图片描述

5.导出MySQL Docker镜像

执行命令以下命令,会保存一个tar文件

docker save -o mysql-5.7.tar mysql-5.7:5.7

在这里插入图片描述

6.导入 MySQL 镜像

执行命令:

docker load -i mysql-5.7.tar

在这里插入图片描述

7.在目标主机上运行 MySQL 容器

执行命令:

docker run -d -p 3306:3307 --name mysql-5.7 -v /mysql:/var/lib/mysql mysql-5.7:5.7

注意:此处是暴露宿主机的3307端口
在这里插入图片描述

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值