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


前戲

大家可能都在服務器上搭建過mysql,或許遇到過不少的坑。但是使用docker部署mysql則很容易

mysql的鏡像文檔:https://hub.docker.com/_/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 <contrainerId>  /bin/bash
# 這種方式下,數據庫才可輸入和展示中文數據 docker exec -it <contrainerId> env LANG=C.UTF-8 /bin/bash

我們這里使用簡單的進入方式

docker exec -it zzmysql /bin/bash

執行建庫建表插入數據

-- 建庫
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.7
WORKDIR /docker-entrypoint-initdb.d
ENV LANG=C.UTF-8
ADD init.sql .

注意: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

 連接數據庫,查看數據是否顯示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM