使用 Docker 容器创建多个 MySQL 数据库

在现代应用程序开发中,使用 Docker 容器来管理数据库是一种流行的做法,尤其是当需要多个数据库的情况下。本文将指导你如何使用 Docker 创建一个 MySQL 容器,并在其中初始化多个数据库。

整体流程

以下是创建和启动一个带有多个 MySQL 数据库的 Docker 容器的步骤:

步骤 描述
1 安装 Docker
2 检查 MySQL Docker 镜像
3 编写 Dockerfile
4 创建启动脚本
5 构建 Docker 镜像
6 运行 Docker 容器
7 验证数据库创建情况

详细步骤

步骤 1:安装 Docker

确保你的计算机上已安装 Docker。可以通过以下命令在终端中检查 Docker 是否已安装:

docker --version

此命令会返回 Docker 的版本信息。如果没有安装,请前往 [Docker 官网]( 下载并安装。

步骤 2:检查 MySQL Docker 镜像

可以使用以下命令检查可用的 MySQL Docker 镜像:

docker search mysql

这将列出可用的 MySQL 镜像。我们将使用官方的 MySQL 镜像。

步骤 3:编写 Dockerfile

创建一个名为 Dockerfile 的新的文件,并将以下内容写入该文件:

# 使用官方 MySQL 镜像
FROM mysql:latest

# 设定环境变量
ENV MYSQL_ROOT_PASSWORD=root_password  # 设置 root 用户的密码
ENV MYSQL_DATABASE=db1                  # 创建第一个数据库
ENV MYSQL_DATABASE=db2                  # 创建第二个数据库

代码说明:

  • FROM mysql:latest:使用最新的 MySQL 官方镜像。
  • ENV:设置了环境变量,MYSQL_DATABASE 只能用一次,因此若要创建多个数据库,需要采取额外步骤。

步骤 4:创建初始化脚本

我们需要一个 SQL 脚本来创建其他数据库。创建一个名为 init.sql 的文件,并添加以下内容:

CREATE DATABASE IF NOT EXISTS db2;   -- 创建第二个数据库
CREATE DATABASE IF NOT EXISTS db3;   -- 创建第三个数据库

代码说明:

  • CREATE DATABASE IF NOT EXISTS:确保在数据库不存在的情况下创建数据库。

步骤 5:构建 Docker 镜像

在包含 Dockerfileinit.sql 文件的目录下,运行以下命令构建 Docker 镜像:

docker build -t mysql-multi-db .

代码说明:

  • -t mysql-multi-db:为新镜像命名为 mysql-multi-db
  • .:表示当前目录为上下文。

步骤 6:运行 Docker 容器

使用以下命令运行新的 Docker 容器:

docker run --name mysql-container -d -e MYSQL_ROOT_PASSWORD=root_password -v $(pwd)/init.sql:/docker-entrypoint-initdb.d/init.sql mysql-multi-db

代码说明:

  • --name mysql-container:为容器命名。
  • -d:以后台模式运行容器。
  • -e MYSQL_ROOT_PASSWORD=root_password:设置 root 密码。
  • -v $(pwd)/init.sql:/docker-entrypoint-initdb.d/init.sql:将初始化 SQL 文件挂载到容器中,以便 MySQL 在启动时执行它。

步骤 7:验证数据库创建情况

最终,您可以通过以下命令登录 MySQL 并验证数据库是否创建成功:

docker exec -it mysql-container mysql -uroot -proot_password -e "SHOW DATABASES;"

代码说明:

  • docker exec -it:执行命令在容器中。
  • mysql -uroot -proot_password:使用 root 用户登录 MySQL。
  • -e "SHOW DATABASES;":执行 SQL 查询显示所有数据库。

状态图

以下是创建和启动 MySQL 容器的状态图,使用 mermaid 语法表示:

stateDiagram
    [*] --> 安装Docker
    安装Docker --> 检查镜像
    检查镜像 --> 编写Dockerfile
    编写Dockerfile --> 创建启动脚本
    创建启动脚本 --> 构建镜像
    构建镜像 --> 运行容器
    运行容器 --> 验证数据库
    验证数据库 --> [*] 

结尾

通过以上的步骤,你已经成功地创建和运行了一个带有多个数据库的 MySQL Docker 容器。记得在开发和生产环境中合理管理数据库,确保数据安全。Docker 使得管理容器化应用变得便捷,可以帮助你专注于开发工作,而不是环境配置。如果还有其他关于 Docker 或 MySQL 的问题,欢迎提问!