Docker Compose实现MySQL不初始化教程

1. 概述

本教程旨在教会刚入行的开发者如何使用Docker Compose来实现MySQL不初始化。为了帮助小白更好地理解,我将以步骤流程的方式进行介绍,并给出每一步所需的代码和注释。

2. 步骤流程

下面是实现“Docker Compose MySQL不初始化”的步骤流程表格:

步骤 操作
步骤一 创建Docker Compose文件
步骤二 配置MySQL服务
步骤三 指定自定义的初始化脚本
步骤四 启动Docker容器

接下来,我们将详细介绍每一步的操作。

3. 创建Docker Compose文件

首先,我们需要创建一个Docker Compose文件,用于定义我们的MySQL服务。在项目根目录下创建一个名为docker-compose.yml的文件,并将以下代码添加到文件中:

version: '3.8'
services:
  mysql:
    image: mysql:latest
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./init-script:/docker-entrypoint-initdb.d

代码解释

  • version: '3.8':指定Docker Compose文件格式的版本。
  • services:定义我们的服务。
  • mysql:服务名称。
  • image:使用的MySQL镜像。
  • container_name:指定容器的名称。
  • command:指定Docker启动容器时执行的命令。
  • environment:设置MySQL的环境变量。
  • MYSQL_ROOT_PASSWORD:设置MySQL的root用户密码。
  • volumes:挂载目录。
  • ./init-script:/docker-entrypoint-initdb.d:将init-script目录挂载到MySQL容器的/docker-entrypoint-initdb.d目录下,以便容器启动时执行其中的脚本。

4. 配置MySQL服务

在步骤三中,我们将使用自定义的初始化脚本来代替MySQL的默认初始化过程。在项目根目录下创建一个名为init-script的文件夹,并在该文件夹中创建一个名为init.sql的文件。在init.sql中,我们可以定义我们自己的初始化逻辑。例如,我们可以创建数据库、表格等等。在init.sql中,添加以下内容:

-- 创建数据库
CREATE DATABASE my_database;

5. 指定自定义的初始化脚本

修改步骤一中创建的docker-compose.yml文件,将volumes部分修改为以下内容:

volumes:
  - ./init-script:/docker-entrypoint-initdb.d/:ro

代码解释

  • ./init-script:/docker-entrypoint-initdb.d/:ro:将init-script目录挂载到MySQL容器的/docker-entrypoint-initdb.d目录下,并设置为只读模式。

6. 启动Docker容器

在项目根目录下打开终端,运行以下命令来启动Docker容器:

docker-compose up -d

代码解释

  • docker-compose up -d:启动Docker容器,并在后台运行。

至此,我们已经完成了实现“Docker Compose MySQL不初始化”的步骤。你可以运行docker-compose up -d命令来启动容器,然后访问MySQL服务来验证是否成功。

7. 流程图

下面是实现“Docker Compose MySQL不初始化”的流程图:

journey
    title Docker Compose实现MySQL不初始化流程图

    section 创建Docker Compose文件
    创建Docker Compose文件 --> 配置MySQL服务

    section 配置MySQL服务
    配置MySQL服务 --> 指定自定义的初始化脚本

    section 指定自定义的初始化脚本
    指定自定义的初始化脚本 --> 启动Docker容器

    section 启动Docker容器
    启动Docker容器 --> 完成
``