使用docker-compose启动并初始化mysql

流程

步骤 描述
1. 创建docker-compose.yml文件
2. 编写docker-compose配置
3. 创建init.sql文件
4. 在docker-compose配置中添加初始化sql
5. 启动docker容器

详细步骤

1. 创建docker-compose.yml文件

在项目根目录下创建一个名为docker-compose.yml的文件,用于描述docker容器的配置。

2. 编写docker-compose配置

在docker-compose.yml文件中添加以下内容,用于配置mysql容器:

version: '3'
services:
  db:
    image: mysql:latest
    restart: always
    environment:
        MYSQL_ROOT_PASSWORD: example
        MYSQL_DATABASE: dbname
        MYSQL_USER: dbuser
        MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
  • version: '3':指定使用的docker-compose版本。
  • services.db.image:指定mysql镜像的名称和版本。
  • services.db.restart:定义容器重启策略。
  • services.db.environment:配置mysql的环境变量,包括root密码、数据库名称、用户名和密码。
  • services.db.ports:将mysql容器的3306端口映射到主机的3306端口。
  • services.db.volumes:将init.sql文件挂载到容器的/docker-entrypoint-initdb.d/目录下,用于初始化数据库。
3. 创建init.sql文件

在项目根目录下创建一个名为init.sql的文件,用于编写初始化数据库的SQL语句。

4. 在docker-compose配置中添加初始化sql

在docker-compose.yml文件的volumes配置中添加以下内容,将init.sql文件挂载到mysql容器的初始化目录下:

volumes:
  - ./init.sql:/docker-entrypoint-initdb.d/init.sql
5. 启动docker容器

在终端中执行以下命令,使用docker-compose启动mysql容器:

docker-compose up -d
  • -d 参数表示以后台模式启动容器。

示例代码

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:latest
    restart: always
    environment:
        MYSQL_ROOT_PASSWORD: example
        MYSQL_DATABASE: dbname
        MYSQL_USER: dbuser
        MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

init.sql

CREATE DATABASE IF NOT EXISTS dbname;
USE dbname;

CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL
);

INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane', 'jane@example.com');

序列图

以下是docker-compose启动并初始化mysql的序列图:

sequenceDiagram
    participant 用户
    participant 终端
    participant docker-compose
    participant mysql容器

    用户 ->> 终端: 执行docker-compose up -d命令
    终端 ->> docker-compose: 发送启动命令
    docker-compose ->> mysql容器: 根据docker-compose.yml配置创建容器
    mysql容器 -->> 终端: 返回容器启动成功信息

以上是通过docker-compose启动并初始化mysql的流程,通过这个方法你可以轻松地创建和初始化mysql容器。