• 通过Dockerfile build mysql镜像 初始化mysql数据库


    做什么

    #1.docker下mysql镜像容器初始化
    #2.将初始化sql文件通过init.sql文件内的SOURCE命令执行
    #3.容器启动起来,mysql内就有相应的初始化数据了

    先看目录结构

    ├── Dockerfile
    ├── README.md
    ├── init.sql
    └── xxx
        ├── dir1
        │   ├── sys_user.sql
        │   ├── sys_org.sql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.build镜像的Dockerfile

    # 选择基础镜像
    FROM mysql:latest
    
    # 联系人
    MAINTAINER mhl meihongliang@xxxx.com
    
    # 工作/初始目录
    WORKDIR /docker-entrypoint-initdb.d
    
    # 使用root账户创建目录
    USER root
    RUN mkdir -p ./xxx/dir1
    RUN mkdir -p ./xxx/dir1
    RUN mkdir -p ./xxx/dir1
    
    # 设置数据库密码(根据需要修改)
    ENV MYSQL_ROOT_PASSWORD=root
    
    # 将当前目录的内容COPY至指定目录
    COPY ./init.sql /docker-entrypoint-initdb.d/
    COPY ./sobey /docker-entrypoint-initdb.d/xxx
    
    # 执行mysqld命令
    CMD ["mysqld"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    init.sql

    -- 建库 使用库 建表 插数据
    CREATE DATABASE IF NOT EXISTS yourDatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    -- 使用并用source命令执行你的初始化mysql
    -- 可以执行多次source命令
    USE yourDatabase;
    SOURCE ./xxx/dir1/sys_user.sql;
    SOURCE ./xxx/dir1/sys_org.sql;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    sys_user.sql

    CREATE TABLE `sys_user` (
      `ID` int NOT NULL AUTO_INCREMENT,
      `loginName` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `userCode` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `nickName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`ID`) USING BTREE,
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户信息表';
    
    -- 你具体的sql语句了
    -- INSERT INTO `sys_user` (field1,field2) VALUES ('value1','value2');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    README.md

    # 在init目录下执行下述命令将此mysql镜像启动为mysql容器
    # build docker下的mysql镜像
    docker build -t yourCustomerImageName .
    # 启动mysql容器
    docker run --name mysql_3309 -e MYSQL_ROOT_PASSWORD=root -p 3309:3306 -d yourCustomerImageName
    
    • 1
    • 2
    • 3
    • 4
    • 5

    最后启动命令

    docker run --name mysql_3309 -e MYSQL_ROOT_PASSWORD=root -p 3309:3306 -d yourCustomerImageName
    
    • 1

    以上操作跟着做是完全ok的,mysql容器内的数据是能正常初始化的
    一些库/表/密码需要自行控制

  • 相关阅读:
    C++ 字符串操作
    docker基本管理
    等保2.0二级内容
    Microsoft兼容性遥测是什么?Microsoft兼容性遥测占用高磁盘
    自动生成电子印章
    AVS3:双向梯度修正BGC
    java基于springboot+vue的大学生在线答疑系统 elementui
    ll、chmod 命令
    云计算安全:保护你的数据免受黑客侵害
    Go语言语法分析之我想打同事的脸--编译
  • 原文地址:https://blog.csdn.net/CsbLanca/article/details/136339449