docker mysql启动时执行初始化sql

想要在docker中启动MySQL时自动执行初始化sql文件,可以通过以下步骤来实现:

1. 创建一个目录用于存放初始化文件

我们首先需要创建一个目录,用于存放我们的初始化sql脚本文件。

$ mkdir db_init_sql

2. 编写初始化sql脚本文件

在创建的目录下,我们需要创建一个或多个初始化sql脚本文件。这些sql文件包含了我们要在MySQL启动时执行的所有命令。假设我们已经创建了一个叫做init.sql的文件。

CREATE DATABASE my_db;
USE my_db;
CREATE TABLE users (
   id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(30) NOT NULL,
   email VARCHAR(50),
   created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3. 创建docker-compose.yml文件

我们要使用docker-compose来简化docker容器的管理。在目录下创建一个docker-compose.yml文件,并添加以下内容:

version: '3'

services:
  db:
    image: mysql:latest
    command: "--init-file /docker-entrypoint-initdb.d/init.sql"
    environment:
      MYSQL_ROOT_PASSWORD: "password"
    volumes:
      - ./db_init_sql:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"

这个配置包含了以下几个部分:

  1. image:指定我们使用的MySQL镜像。这里我们使用最新的正式版。
  2. command:提供给MySQL的启动命令,使用--init-file参数指向我们在第二步中创建的初始化sql脚本文件。
  3. environment:设置MySQL的root用户的密码。
  4. volumes:把我们在第一步中创建的初始化sql脚本文件目录映射到MySQL容器中,在MySQL启动时执行这些sql语句。
  5. ports:把MySQL的3306端口映射到本地主机,以便我们连接到MySQL实例。

4. 启动Docker容器

docker-compose.yml文件所在的目录中,运行以下命令来启动MySQL容器:

$ docker-compose up -d

示例1

我们可以通过以下方式,再创建一个sql脚本文件init2.sql

USE my_db;
INSERT INTO users (username, email) VALUES ('john', 'john@abc.com');

此时,需要修改docker-compose.yml文件中command的设置,使其启动时执行init.sqlinit2.sql文件内容。

version: '3'

services:
  db:
    image: mysql:latest
    command: --init-file /docker-entrypoint-initdb.d/init.sql --init-file /docker-entrypoint-initdb.d/init2.sql
    environment:
      MYSQL_ROOT_PASSWORD: "password"
    volumes:
      - ./db_init_sql:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"

示例2

如果MySQL初始化时遇到了错误,想要重新初始化,我们需要删除容器和数据卷,然后重新启动一个新的容器。在运行以下命令来删除容器和数据卷:

$ docker-compose down -v

这个命令将会停止和删除MySQL容器及其相关数据卷。然后我们可以重新运行docker-compose up -d来启动一个新的MySQL容器,并重新初始化数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker mysql启动时执行初始化sql - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • .net框架简单介绍

    以下是关于“.NET框架简单介绍”的完整攻略,包括基本概念、组成部分、特点和示例。 基本概念 .NET框架是由微软公司开发的一种应用程序框架,用于开发和运行Windows操作系统上的应用程序。它提供了一种统一的编程模型,使开发人员可以使用多种编程语言(如C#、VB.NET等)开发应用程序。 组成部分 .NET框架由以下组成部分组成: 公共语言运行时(CLR)…

    other 2023年5月7日
    00
  • Win10Mobile/PC创意者更新15063.414(413)累计更新补丁KB4022725更新修复内容汇总

    Win10Mobile/PC创意者更新15063.414(413)累计更新补丁KB4022725更新修复内容汇总攻略 本攻略将详细介绍Win10Mobile/PC创意者更新15063.414(413)累计更新补丁KB4022725的修复内容,并提供两个示例说明。 更新修复内容 以下是KB4022725更新修复的内容: 修复了网络连接问题:修复了在某些情况下,…

    other 2023年8月3日
    00
  • 辐射76卡加载怎么办 卡加载界面解决方法

    针对“辐射76卡加载怎么办 卡加载界面解决方法”的问题,我提供以下完整攻略: 问题现象 在玩辐射76游戏时,可能会遇到卡在加载界面的问题。这个问题表现为游戏的加载界面无限延迟且没有进展,导致无法进行游戏。 可能原因 卡在加载界面的原因可能是多方面的。以下是一些常见的原因: 游戏文件损坏或缺失 电脑配置不足 第三方软件干扰 解决方法 针对卡在加载界面的问题,我…

    other 2023年6月27日
    00
  • Swift如何在应用中添加图标更换功能的方法

    下面是Swift在应用中添加图标更换功能的方法的完整攻略。 准备工作 在开始之前,需要准备以下两个图标: 应用主图标,大小为180×180,命名为AppIcon.png 应用备用图标,大小为180×180,命名为AppIcon-Alternate.png 这两个图标需要添加到项目的Assets.xcassets里。 添加代码 以下代码实现了在应用设置页面中添…

    other 2023年6月27日
    00
  • window下用taskkill杀死进程

    window下用taskkill杀死进程 在Windows系统下,有时候我们需要杀死某个进程来解决问题。Windows系统自带了用于杀死进程的命令行工具taskkill。本文将介绍如何使用taskkill命令杀死进程。 taskkill命令介绍 taskkill是Windows系统自带的命令行工具,用于杀死进程。taskkill命令的语法如下: taskki…

    其他 2023年3月28日
    00
  • GIT相关-IDEA/ECLIPSE工具配置的教程详解

    GIT相关-IDEA/Eclipse工具配置的教程详解 一、IDEA工具配置 1. 安装Git插件 首先需要在IDEA中安装Git插件。打开IDEA,点击 Settings -> Plugins,在搜索框中输入Git,选择Git插件并点击 Install 安装即可。 2. 配置Git 安装完Git插件之后,需要在IDEA中对Git进行配置。打开IDEA…

    other 2023年6月27日
    00
  • 前端算法题解leetcode114二叉树展开为链表

    关于前端算法题解leetcode114二叉树展开为链表,我给出完整的攻略如下: 问题概述 给定一个二叉树,原地将它展开为一个单链表。其中,展开后的单链表应该符合如下要求: 单链表的右节点指针为原先的二叉树中序遍历的后继节点。 单链表的左节点应该为空(因为右节点指针已经代替了左右子树指针)。 例如,给定如下二叉树: 1 / \ 2 5 / \ \ 3 4 6 …

    other 2023年6月27日
    00
  • asp.net简述MVC开发模式

    ASP.NET是一种基于Microsoft .NET框架的Web应用程序开发框架。其中,MVC(Model-View-Controller)是一种常用的开发模式,它将应用程序分为三个部分:模型、视图和控制器。本文将介绍ASP.NET MVC开发模式的基本概念、使用方法和示例。 1. MVC开发模式的基本概念 MVC开发模式是一种将应用程序分为三个部分的开发模…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部