前言
Docker 是一种虚拟化技术,可以将应用程序打包成一个独立的容器,在不同的环境中运行。它的优点是可以快速构建、部署和管理应用程序,提高开发效率,降低成本。本文介绍如何在 Docker 中构建基于 CentOS 的 MySQL 数据库服务器,旨在帮助前端开发人员快速搭建开发环境。
准备工作
在开始之前,需要安装 Docker 和 Docker Compose。可以参考 Docker 官方文档进行安装。
步骤
1. 创建 Dockerfile 文件
在本地新建一个文件夹,命名为 mysql,在该文件夹下创建 Dockerfile 文件,内容如下:
-- -------------------- ---- ------- ---- -------- ---------- -------- --- --- -- ------ -- - --- -- ------- ------------ -- - --- -- ------- ----- ------------ -- - --- ----- --- --- ----- --------------- -- - ----- ----------- --------------- ---- ------ ----------------- ------ ---- --- ------------------------
Dockerfile 文件中的每一个指令都会生成一个新的镜像层。上面的 Dockerfile 文件中,首先从 centos:7 镜像中构建基础镜像,然后安装 MySQL 和 MySQL Server,并清除 yum 缓存。接着创建 /var/run/mysqld 目录,并将其所有权赋予 mysql 用户,然后将 my.cnf 文件复制到 /etc/mysql 目录下。最后暴露 MySQL 服务端口 3306,并启动 mysqld_safe 进程。
2. 创建 my.cnf 文件
在 mysql 文件夹下创建 my.cnf 文件,内容如下:
[mysqld] user=mysql datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock pid-file=/var/run/mysqld/mysqld.pid bind-address=0.0.0.0
my.cnf 文件中包含了 MySQL 服务器的配置信息,比如数据库的存储路径、监听的端口等。注意,其中的 bind-address 配置项需要设置为 0.0.0.0,表示允许任意 IP 地址访问。
3. 创建 docker-compose.yml 文件
在 mysql 文件夹下创建 docker-compose.yml 文件,内容如下:
-- -------------------- ---- ------- -------- --- --------- ------ ------ - --------------- ----- -------- ------ ------ - ----------- ------------ - -------------------------------- -------- - ---------------------
docker-compose.yml 文件中定义了一个 MySQL 服务,该服务使用了上面创建的 Dockerfile 文件进行构建。容器名称为 mysql,始终重启。将容器的 3306 端口映射到主机的 3306 端口。设置 MYSQL_ROOT_PASSWORD 环境变量,用于指定 MySQL 的 root 用户密码。将容器的 /var/lib/mysql 目录映射到主机的 ./data 目录,用于持久化存储数据。
4. 构建和启动 MySQL 服务
在 mysql 文件夹下运行以下命令,构建和启动 MySQL 服务:
docker-compose up -d
该命令会自动构建镜像、创建并启动容器。使用 -d 参数可以将容器后台运行。
5. 连接 MySQL 服务
使用以下命令连接 MySQL 服务:
mysql -h 127.0.0.1 -u root -p
该命令会连接到本地的 MySQL 服务,使用 root 用户和密码进行身份验证。
结论
本文介绍了如何在 Docker 中构建基于 CentOS 的 MySQL 数据库服务器。通过 Docker 的虚拟化技术,可以快速构建、部署和管理 MySQL 服务,提高开发效率,降低成本。希望本文能够对前端开发人员有所帮助。
示例代码
Dockerfile 文件:
-- -------------------- ---- ------- ---- -------- ---------- -------- --- --- -- ------ -- - --- -- ------- ------------ -- - --- -- ------- ----- ------------ -- - --- ----- --- --- ----- --------------- -- - ----- ----------- --------------- ---- ------ ----------------- ------ ---- --- ------------------------
my.cnf 文件:
[mysqld] user=mysql datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock pid-file=/var/run/mysqld/mysqld.pid bind-address=0.0.0.0
docker-compose.yml 文件:
-- -------------------- ---- ------- -------- --- --------- ------ ------ - --------------- ----- -------- ------ ------ - ----------- ------------ - -------------------------------- -------- - ---------------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67437b52f3dd6530329190f7