你好,我是老齐,本节咱们来学习快速部署MySQL,并为其初始化数据库!在以前的学习过程中,经常有同学问我,老师你的数据库脚本在哪?老师我的MySQL安装不上,老师我的脚本导入不了,像这种事情经常困扰着我,也困扰着在座的各位。

其实如果使用docker以后,我们完全可以避免这种问题。本节我们就来学习如何快速部署一个MySQL5.7,并为其初始化数据。下边咱们说做就做。 首先上来咱们第一步先进入到 来看一下我们的镜像有哪些?这里输入MySQL,很快MySQL就出现了,那么点击以后来查看里边有具体的哪些版本?

可以看到在MySQL这个位置上出现了我们可以使用的MySQL官方的docker镜像,这里有8.x也有5.x 那么我们要使用5.7.26这个版本,但对于我们来说先不着急去用它,我们点击这个版本,当点击以后可以看到,马上就链接到了github上面。

这是MySQL官方镜像的共享文档,在这儿默认展现的是Dockerfile也就是我们5.7版本MySQL的构建的脚本了。那么在这个脚本中我们把注意力放在第23行上,这里Dockerfile在构建十执行一句话。mkdir创建一个目录,这个目录关键了docker-entrypoint-initdb.d这个地址是干什么用的?看名字是用于初始化数据库的。 这个目录在构建时被创建里边放什么东西呢?在这儿我们回到docker镜像的介绍页面,当回到介绍页面以后来向下寻找。在这个Initializing a fresh instance边有描述说道,

作为当前的目录允许扩展名为.sh .sql 以及 .sql.gz文件放入其中,如果是.sh则直接执行,如果是.sql则自动被MySQL进行导入,而.sql.gz压缩文件会解压以后再进行导入,那么这个文件夹正好符合我们的要求,我们只需要将自己的建表脚本放入到这个目录中就可以了。

下边咱们说做就做。来,现在我们找到源代码,我创建了一个叫simple db的目录,这里有一个初始化脚本,init.sql我们现在打开他看一下

create database `docker_mysql`;

use docker_mysql;

-- 建表

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` bigint(20) NOT NULL,

`created_at` bigint(40) DEFAULT NULL,

`last_modified` bigint(40) DEFAULT NULL,

`email` varchar(255) DEFAULT NULL,

`first_name` varchar(255) DEFAULT NULL,

`last_name` varchar(255) DEFAULT NULL,

`username` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 插入数据

INSERT INTO `user` (`id`, `created_at`, `last_modified`, `email`, `first_name`, `last_name`, `username`)

VALUES

(0,1490257904,1490257904,'john.doe@example.com','John','Doe','user');

我们如何与docker进行联动?首先进入windows的命令行,在这里直接输入

docker pull mysql:5.7

在init.sql同级下创建一个Dockerfile,作为Dockerfile文件,现在要增加一些文件复制的代码。

FROM mysql:5.7

WORKDIR /docker-entrypoint-initdb.d

ADD init.sql .

首先书写from MySQL:5.7,设置基准镜像,之后,用workdir来设置我们工作目录。把它定位到以后,紧接着使用ADD命令,将当前目录的init.sql文件复制到容器中的目录中,把这三行写上,那么在MySQL5.7容器启动时,就会自动加载配置文件并执行它。

之后咱们要进行镜像的构建了。

docker build -t itlaoqi-sampledb F:\IT加油站\Docker与K8S容器化实践\源代码\sampledb

作为init.sql这个文件被自动地复制到了目录中。下边关键的地方来了,我们要构建容器, 利用docker run -P进行端口映射。我们都知道MySQL默认的端口号是3306,那么我们要进行映射的时候不妨这么写,3310是外部的端口,而容器内部3306写上。

docker run -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root itlaoqi-sampledb

同时还有一个关键的设置-e。-e之前我们没有讲过,其实非常简单,它就是环境常量的意思。 在这儿我们书写MYSQL_ROOT_PASSWORD。这个环境常量是由MYSQL5.7镜像所定义的,在这里用于,设置root的初始化密码用户名root,密码root。最后要增加docker的名称。itlaoqi-sampledb,把这个写好,回车。请看屏幕上就会有一系列的输出,我们要做的只需要等待。好的,当你看到了五点7.26 3306的时候,就代表我们MySQL容器启动成功了,此时可以ctrl+C退出。

在这里我们不妨来看一下外侧的端口3310是否出现了?

netstat -ano|grep 3310

Mysql 5.7 3310端口部署成功

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐