通过docker部署的MySQL数据库初始化方式

背景

安装好 MySQL 容器后,有时需执行 MySQL 命令创建项目初始表才能使用。手动创建不太便捷,可将相关 SQL 命令保存为.sql文件(如init.sql)。在docker-compose.yml中配置 MySQL 容器时,借助volumes把该脚本挂载到 MySQL 容器的初始化目录(/docker-entrypoint-initdb.d/),以此完成自动创建,这样会方便许多。

步骤

1、创建 SQL 初始化文件

在项目目录下创建 init.sql 文件,内容为你的 SQL 命令,如下:

CREATE DATABASE IF NOT EXISTS `road_detection` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE `road_detection`;

CREATE TABLE `detection_result` (
  `id` int NOT NULL AUTO_INCREMENT,
  `img_url` text,
  `result` longtext,
  `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2、在 docker-compose.yml 中配置 MySQL 容器

确保 MySQL 服务挂载了该初始化脚本,如下:

services:
  mysql:
    image: mysql:8.0
    ports:
      - "3486:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=mysql1234
      - MYSQL_DATABASE=road_detection
    volumes:
      - mysql_data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # 挂载初始化脚本
    restart: always

3、原理说明

MySQL 容器启动时,会自动执行 /docker-entrypoint-initdb.d/ 目录下的所有 .sql、.sh 脚本,从而完成数据库和表的初始化。

你可能感兴趣的:(资料,数据库,docker,mysql)