文章目录
docker快速部署mysql数据库并初始化
下载镜像
docker pull mysql:5.7
启动 mysql服务器实例
docker官网地址:https://hub.docker.com/
搜索mysql,给出了启动一个mysql实例的方法:
docker run --name some-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
密码可以自定义
进入容器:
docker exec -it 596f0dda975f /bin/bash
进入mysql:
初始化sql语句:
-- 建库
create database `db_student`;
SET character_set_client = utf8;
use db_student;
-- 建表
drop table if exists `user`;
CREATE TABLE user (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id)
)engine=innodb charset=utf8;
-- 插入数据
insert into user values('1','小明','15','初三','男');
insert into user values('2','小红','13','初二','女');
insert into user values('3','小东','14','初一','男');
insert into user values('4','小西','12','初二','男');
在这个镜像是无法输入中文的
只有在进入容器时,使用:
docker exec -it 599dc0430348 env LANG=C.UTF-8 /bin/bash
才能显示中文
dockerfile初始化新实例
我们可以通过自定义一个后缀为.sql
或者.sh
或者.sql.gz
的文件,在/docker-entrypoint-initdb.d
工作路径下编译完成初始化
创建init.sql文件:
将上面的sql语句插入到文件中
创建dockerfile:
WORKDIR /docker-entrypoint-initdb.d
FROM mysql:5.7
ENV LANG=C.UTF-8
ADD init.sql .
构建镜像:
docker build -t df-mysql:5.7 .
启动并运行容器:
docker run --name some-dfmysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d df-mysql:5.7
进入容器:
docker exec -it b55e5b1b1fe3 /bin/bash
进入mysql验证:
初始化完成
可能遇到的问题
使用secureCRT输入中文乱码
进入容器显示bash-4.2#
在当前容器中执行:
cp /etc/skel/.bashrc /root
cp /etc/skel/.bash_profile /root
退出容器,重启容器,进入,恢复正常