制作MySQL镜像添加默认数据库及数据

1,493 阅读1分钟

(0) 准备以下目录结构

.
├── Dockerfile
└── sql-scripts
    └── 01-playground.sql

(1) 编写数据库脚本

脚本名: 01-playground.sql

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

CREATE TABLE `t_employee` (
  `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ID',
  `username` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名字',
  `gender` varchar(6) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '性别',
  `password` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码',
  `dob` datetime DEFAULT NULL COMMENT '出生日期',
  `title` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '职位',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='雇员';

INSERT INTO `t_employee` VALUES ('1', '应卓', 'MALE', '9e21b083aff2ea3acdd9cf9df5a91141', '1982-08-19 00:00:00', '高级软件工程师');

SET FOREIGN_KEY_CHECKS = 1;

显然,这里为了演示方便,数据库里只添加一张表和一条数据。

(2) 编写Dockerfile

内容如下:

FROM mysql:5.7.25

MAINTAINER 应卓 yingzhor@gmail.com

# 数据库名
ENV MYSQL_DATABASE playground

# 默认根用户密码
ENV MYSQL_ROOT_PASSWORD root

# 拷贝初始化sql脚本
COPY ./sql-scripts/ /docker-entrypoint-initdb.d/

(3) 构建

docker build -t my-mysql:latest .