[TOC]
一、编写配置文件准备
1.准备创建数据的脚本文件
本实例准备了一个创建数据的脚本文件,包含了创建表,没有初始化数据的内容。
脚本名称:aa.sql
脚本内容:
CREATE DATABASE IF NOT EXISTS `dev_yxywg`;
USE `dev_yxywg`;
DROP TABLE IF EXISTS `aa`;
CREATE TABLE `aa` (
`sync_pk` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL ,
`hos_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`create_time` varchar(19) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`study_iuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`study_content` mediumtext COLLATE utf8mb4_unicode_ci ,
`study_state` int(255) DEFAULT NULL
`remark` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
PRIMARY KEY (`sync_pk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ;
2.编写一个Shell脚本
这个脚本主要实现初始化创建数据库,表结构SQL文件的读取
脚本名称:install_data.sh
脚本内容:
#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <
source $WORK_PATH/$FILE_0;
3.编写构造镜像的Dockerfile
-文件名称:Dockerfile
-文件内容:
# Docker image of image-gateway mariaDB
# VERSION 0.0.1
# Author: zhangyongliang
#基础镜像使用mariaDB最新版
FROM mariadb:latest
#作者
MAINTAINER ZhangYongliang
#定义工作目录
ENV WORK_PATH /usr/local/work
#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
#定义sql文件名
ENV FILE_0 aa.sql
#定义shell文件名
ENV INSTALL_DATA_SHELL install_data.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
二、 构造镜像
1.执行构造镜像
将上述的文件上传到具有Doc