docker--部署mysql5.7并初始化

网友投稿 359 2022-10-18

docker--部署mysql5.7并初始化

前戏

大家可能都在服务器上搭建过mysql,或许遇到过不少的坑。但是使用docker部署mysql则很容易

mysql的镜像文档:​​5.7的镜像

docker pull mysql:5.7

查看镜像

docker images

启动镜像

docker run --name zzmysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:5.7

# 上面的没有挂载,也不是最新的mysql,最新的django已经不支持5.7了,所以这里使用最新的mysql,挂载到本地的 /var/lib/mysql目录下docker run -d --name mydb -v mysql:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zou123456 mysql

说明:

--name  后面是指定的容器名-p 代表端口映射,格式为 宿主机映射端口:容器运行端口-e 代表添加环境变量MYSQL_ROOT_PASSWORD是root用户的登陆密码mysql:5.7 是下载的镜像+版本(若不指定版本,该命令会重新下载mysql最新的镜像)-d 后台启动

外网访问的是3307端口

进入容器内部

# 最简单的进入方式docker exec -it /bin/bash# 这种方式下,数据库才可输入和展示中文数据docker exec

我们这里使用简单的进入方式

docker exec

执行建库建表插入数据

-- 建库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','初二','女');

查询下user表里的数据

可以看出我们查询出来的数据name,classs,sex没有显示,这是因为这个镜像是外国人写得,所以对中文默认不支持

解决不显示中文的问题

这里解决方法有两种,第一种是在进入容器的时候设置环境变量,使用中文就可以了,命令如下,上面也说过

docker exec -it zzmysql env LANG=C.UTF-8 /bin/bash

env LANG=C.UTF-8 设置语言为utf-8

第二种使用dockerfile,在初始化的时候就设置好

创建一个init.sql文件,内容如下(和上面的一样)

创建dockerfile,内容如下

FROM mysql:5.7WORKDIR /docker-entrypoint-initdb.dENV LANG=C.UTF-8ADD

注意:dockerfile和init.sql在同一目录

ADD既可以复制也可以执行init.sql文件,copy只复制

构建docker镜像

docker build -t mysql:zou .

启动容器进入容器内部

docker run --name zzmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:zou

连接数据库,查看数据是否显示

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java如何实现post请求webservice服务端
下一篇:Java Exception异常全方面分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~