一、前言

在使用docker部署mysql服务时,往往需要在创建容器时新建database,在需要在创建实例的过程中希望初始化sql脚本。

mysql官方镜像支持在容器初次启动时自动执行指定的sql脚本或shell脚本(注意:只有初次启动时才能自动执行),在mysql官方的Dockerfile中有下面几句话:(mysql官方地址)

COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]

在容器创建时会调用docker-entrypoint.sh这个脚本,这个脚本会遍历docker-entrypoint-initdb.d目录下所有的.sh和.sql后缀的所有脚本并执行,执行顺序为脚本文件名称排序。

二、实现

根据mysql官方给出的Dockerfile可知,把我们要初始化的sql脚本放到docker-entrypoint-initdb.d目录下,在mysql容器创建的时候就会根据脚本自动初始化。

我这里是使用的是centos7环境

1.Dockerfile

下面来编写Dockerfile

FROM mysql:5.7
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
ENV INSTALL_DB_SQL init_database.sql
COPY ./$INSTALL_DB_SQL $AUTO_RUN_DIR/
RUN chmod 777 $AUTO_RUN_DIR/$INSTALL_DB_SQL

Dockerfile说明:

FROM:从mysql:5.7镜像拉取;

ENV:定义环境变量

COPY:拷贝

RUN:执行

记得要给sql脚本文件添加可执行权限,chmod a+x  也可以

2.编写sql脚本

把写好的sql脚本放到与Dockerfile同级的目录下

-- 建库
CREATE DATABASE IF NOT EXISTS test_db default charset utf8 COLLATE utf8_general_ci;-- 切换数据库
use test_db;-- 建表
DROP TABLE IF EXISTS `test_table`;CREATE TABLE `test_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL COMMENT '姓名',
`sex` varchar(11) DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入数据
INSERT INTO `test_table` (`id`, `name`, `sex`)
VALUES
(1,'张三','男'),
(2,'李四','女');

3.构建镜像并启动容器

将Dockerfile和sql脚本编写好后构建镜像

docker build -t init_mysql:v0.1 .

查看镜像

docker images | grep init_mysql

创建mysql容器后查看状态

docker run --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d init_mysql:v0.1
docker ps -a | grep mysql

至此创建mysql容器并初始化已完成

三、验证

进入到mysql容器中,查看docker-entrypoint-initdb.d/目录下是否有我们的sql脚本

进入mysql,输入密码后,查看sql脚本创建的库、表、数据是否存在

mysql -u root -p

show databases;
use test_db;
show tables;
select * from test_table;

END!

docker部署mysql初始化数据库相关推荐

  1. Docker - 部署 MySQL 5.7 数据库容器

    文章目录 Docker - 部署 MySQL 5.7 数据库容器 环境信息 部署 MySQL 5.7 数据库容器 修改 MySQL 的字符集 参考信息 Docker - 部署 MySQL 5.7 数据 ...

  2. docker 打包mysql_基于docker部署mysql的数据持久化问题

    本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查. 先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用 ...

  3. 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

    没有夸大标题哈,能够成功的,实测后发文 本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的. 直接CV也能搭建起来,莫慌. 我们一起加油!!! 地点 ...

  4. mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL

    最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...

  5. 猿创征文 | 使用Docker部署openGauss国产数据库

    猿创征文 | 使用Docker部署openGauss国产数据库 一.openGauss介绍 1.openGauss简介 2.openGauss产品定位 3.支持的架构和操作系统版本 二.检查宿主机环境 ...

  6. prometheus实现对docker部署mysql监控

    prometheus实现对docker部署mysql监控 1.安装mysql docker pull mysql:5.6 建立挂载的数据卷 mkdir -p /opt/mysql/data 虚拟机33 ...

  7. docker部署mysql并挂载数据卷

    docker部署mysql并挂载数据卷 备份mysql源文件 windows下备份数据库 # 方法一:进入到mysql安装路径下的bin文件,执行备份命令 # pg_dump -h localhost ...

  8. Linux中Docker部署MySQL

    应用背景:在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server Docker中部署MySQL服务时有下述几个关键点: 1.容器内的网络服务和外部机器不能直接通信 ...

  9. mysql 初始化数据库报错

    mysql 初始化数据库报错 bin/mysqld \ > --initialize-insecure \     2018-07-09T09:01:33.092169Z 0 [Warning] ...

最新文章

  1. Git超实用总结,再也不怕记忆力不好了
  2. 【转】 关于寄存器ESP和EBP的一些理解
  3. php 二维数组 根据某个字段排序
  4. ubuntu的xfce4的display只有一种分辨率选项
  5. 想基于K8s按需扩展应用程序,可从这几方面入手
  6. java连接数据库sql server_将SQL Server数据库连接到Java
  7. 【第五周课后作业】“番茄工作法”软件创新性分析
  8. mysql 存储过程 树结构_mysql 树形存储过程
  9. mysql让数据-1_mysql数据库基本操作1
  10. 实现网络IPv6平滑演进的DS-Lite CGN技术
  11. 基本共射放大电路的工作原理
  12. linux下命令行方式的音量控制
  13. 交换机端口mtu值最大_-【SDN】交换机MTU配置总结
  14. 中央电教馆虚拟实验服务器,中央电化教育馆中小学虚拟实验试点工作启动暨培训会侧记...
  15. cpu(处理器)、内存、硬盘之间的关系
  16. 详解Android屏幕亮度和息屏的实现
  17. android mac 照片恢复,照片恢复
  18. 如何使用电脑在线制作闪图?
  19. hpet 定时器中断 8259 linux,[OSDEV]编程高精度定时器(HPET)
  20. QQ音乐关键字搜索并生成下载url

热门文章

  1. java基础总结(九十)--AQS
  2. SpringCloud Invalid packaging for parent POM 1.0-SNAPSHOT, must be “pom“ but is “jar“
  3. 05-使用GitBook打造自己的出版平台
  4. 关于电脑插耳机没有声音的解决办法
  5. SOC FPGA linux系统搭建(Terasic DE10-Nano开发板)
  6. 画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU
  7. 贪吃蛇 java下载_Java实现贪吃蛇游戏源码
  8. [C语言] 自制的贪吃蛇游戏
  9. 定点数(fixed-point number)的运算
  10. spring注解日志