
docker 构建mysql 创建库,创建表,导入数据
2017, Sep 11
在用docker创建mysql容器的时,有时候我们期望容器启动后数据库和表已经自动建好,初始化数据也已自动录入,也就是说容器启动后我们就能直接连上容器中的数据库,使用其中的数据了。
下面我们一起来看看
1、制作sql文件 create_sql.sql 内容如下:
CREATE USER 'TT'@'%' IDENTIFIED BY 'TT@12345678';
GRANT ALL ON *.* TO 'TT'@'%';
create database `TT` default character set utf8 collate utf8_general_ci;
use TT;
-- c_status
CREATE TABLE c_status(
id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
status_cd VARCHAR(4) NOT NULL COMMENT '状态',
`name` VARCHAR(50) NOT NULL COMMENT '名称',
description VARCHAR(200) COMMENT '描述',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);
INSERT INTO c_status(status_cd,NAME,description) VALUES('1','无效的,不在用的','无效的,不在用的');
INSERT INTO c_status(status_cd,NAME,description) VALUES('0','有效的,在用的','有效的,在用的');
INSERT INTO c_status(status_cd,NAME,description) VALUES('S','保存成功','保存成功');
INSERT INTO c_status(status_cd,NAME,description) VALUES('D','作废订单','作废订单');
INSERT INTO c_status(status_cd,NAME,description) VALUES('E','错误订单','错误订单');
INSERT INTO c_status(status_cd,NAME,description) VALUES('NE','通知错误订单','通知错误订单');
INSERT INTO c_status(status_cd,NAME,description) VALUES('C','错误订单','错误订单');
2、制作dockerfile 文件
# Docker image of java110 mysql
# VERSION 0.0.1
# Author: jack wu
FROM mysql:5.6
#作者
MAINTAINER jackWu <928255095@qq.com>
#定义工作目录
ENV WORK_PATH /usr/local/work
#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
#定义sql文件名
ENV FILE_0 create_sql.sql
#定义shell文件名
ENV INSTALL_DATA_SHELL setup.sh
#创建文件夹
RUN mkdir -p $WORK_PATH
#把数据库初始化数据的文件复制到工作目录下
COPY ./$FILE_0 $WORK_PATH/
#把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/
#给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL
3、制作启动脚本setup.sh
#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
source $WORK_PATH/$FILE_0;
4、构建时所需要手工运行的命令
docker build -t java110/docker-mysql .
docker run -ti --name mysql_test -e MYSQL_ROOT_PASSWORD=123456 -p3306:3306 -idt java110/docker-mysql:latest
docker logs -f mysql_test
docker exec -it mysql_test /bin/bash
mysql -uroot -p123456