通过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.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"]

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;

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');

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

最后启动命令

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值