docker部署mysql初始化数据库
一、前言
在使用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初始化数据库相关推荐
- Docker - 部署 MySQL 5.7 数据库容器
文章目录 Docker - 部署 MySQL 5.7 数据库容器 环境信息 部署 MySQL 5.7 数据库容器 修改 MySQL 的字符集 参考信息 Docker - 部署 MySQL 5.7 数据 ...
- docker 打包mysql_基于docker部署mysql的数据持久化问题
本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查. 先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用 ...
- 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
没有夸大标题哈,能够成功的,实测后发文 本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的. 直接CV也能搭建起来,莫慌. 我们一起加油!!! 地点 ...
- mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL
最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...
- 猿创征文 | 使用Docker部署openGauss国产数据库
猿创征文 | 使用Docker部署openGauss国产数据库 一.openGauss介绍 1.openGauss简介 2.openGauss产品定位 3.支持的架构和操作系统版本 二.检查宿主机环境 ...
- prometheus实现对docker部署mysql监控
prometheus实现对docker部署mysql监控 1.安装mysql docker pull mysql:5.6 建立挂载的数据卷 mkdir -p /opt/mysql/data 虚拟机33 ...
- docker部署mysql并挂载数据卷
docker部署mysql并挂载数据卷 备份mysql源文件 windows下备份数据库 # 方法一:进入到mysql安装路径下的bin文件,执行备份命令 # pg_dump -h localhost ...
- Linux中Docker部署MySQL
应用背景:在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server Docker中部署MySQL服务时有下述几个关键点: 1.容器内的网络服务和外部机器不能直接通信 ...
- mysql 初始化数据库报错
mysql 初始化数据库报错 bin/mysqld \ > --initialize-insecure \ 2018-07-09T09:01:33.092169Z 0 [Warning] ...
最新文章
- Git超实用总结,再也不怕记忆力不好了
- 【转】 关于寄存器ESP和EBP的一些理解
- php 二维数组 根据某个字段排序
- ubuntu的xfce4的display只有一种分辨率选项
- 想基于K8s按需扩展应用程序,可从这几方面入手
- java连接数据库sql server_将SQL Server数据库连接到Java
- 【第五周课后作业】“番茄工作法”软件创新性分析
- mysql 存储过程 树结构_mysql 树形存储过程
- mysql让数据-1_mysql数据库基本操作1
- 实现网络IPv6平滑演进的DS-Lite CGN技术
- 基本共射放大电路的工作原理
- linux下命令行方式的音量控制
- 交换机端口mtu值最大_-【SDN】交换机MTU配置总结
- 中央电教馆虚拟实验服务器,中央电化教育馆中小学虚拟实验试点工作启动暨培训会侧记...
- cpu(处理器)、内存、硬盘之间的关系
- 详解Android屏幕亮度和息屏的实现
- android mac 照片恢复,照片恢复
- 如何使用电脑在线制作闪图?
- hpet 定时器中断 8259 linux,[OSDEV]编程高精度定时器(HPET)
- QQ音乐关键字搜索并生成下载url
热门文章
- java基础总结(九十)--AQS
- SpringCloud Invalid packaging for parent POM 1.0-SNAPSHOT, must be “pom“ but is “jar“
- 05-使用GitBook打造自己的出版平台
- 关于电脑插耳机没有声音的解决办法
- SOC FPGA linux系统搭建(Terasic DE10-Nano开发板)
- 画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU
- 贪吃蛇 java下载_Java实现贪吃蛇游戏源码
- [C语言] 自制的贪吃蛇游戏
- 定点数(fixed-point number)的运算
- spring注解日志