• 通过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容器内的数据是能正常初始化的
    一些库/表/密码需要自行控制

  • 相关阅读:
    【JavaEE基础与高级 第62章】Java中的XML介紹使用、XML的约束、XML的解析、XPath使用
    #循循渐进学51单片机#变量进阶与点阵LED#not.6
    PyG学习 - Dataset, DataLoader, Tranforms
    智能网联汽车 自动驾驶地图数据质量规范
    【Mysql】第8篇--数据库元数据
    数巅科技联合长江计算打造AskBot企业智能问答一体机
    【Java】数据类型与变量
    AQS源码探究之竞争锁资源
    Spark Local模式的基本原理及部署
    公司注册地址要注意,小心被拉“黑”,征信受影响
  • 原文地址:https://blog.csdn.net/CsbLanca/article/details/136339449