CentOS中使用Dockerfile部署初始化sql文件的mysql
場景
Docker中部署mysql數據庫:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99213563
CentOS中使用Dockerfile部署帶websocket的SpringBoot的jar包:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119849922
在上面部署Mysql鏡像和會使用Dockerfile的基礎上。
如果要實現定制化一個mysql鏡像,使容器運行起來就會有數據。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
1、新建文件
在服務器上某路徑下新建文件夾mysqldockerfile,在此文件夾下新建或者上傳如下四個文件
2、編輯utf8mb4.cnf數據字符編碼文件
init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server = utf8mb4_unicode_ci default-time_zone = '+8:00' [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb43、編輯腳本文件install_data.sh
#!/bin/bash mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF source $WORK_PATH/$FILE_0;4、編輯Dockerfile文件
FROM mysql:5.7 ENV WORK_PATH /usr/local/work ENV AUTO_RUN_DIR /docker-entrypoint-initdb.dENV FILE_0? init.sql ENV INSTALL_DATA_SHELL install_data.shRUN mkdir -p $WORK_PATH COPY utf8mb4.cnf /etc/mysql/conf.d/utf8mb4.cnf COPY ./$FILE_0 $WORK_PATH/ COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/ EXPOSE 3306 RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL5、最后init.sql是數據庫sql文件
set character set utf8; drop database if exists badao; CREATE DATABASE badao DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT all ON badao.* TO 'root'@'%'; use badao;-- ---------------------------- -- 1、部門表 -- ---------------------------- drop table if exists sys_dept; create table sys_dept (dept_id bigint(20) not null auto_increment comment '部門id',parent_id bigint(20) default 0 comment '父部門id',ancestors varchar(50) default '' comment '祖級列表',dept_name varchar(30) default '' comment '部門名稱',order_num int(4) default 0 comment '顯示順序',leader varchar(20) default null comment '負責人',phone varchar(11) default null comment '聯系電話',email varchar(50) default null comment '郵箱',status char(1) default '0' comment '部門狀態(0正常 1停用)',del_flag char(1) default '0' comment '刪除標志(0代表存在 2代表刪除)',create_by varchar(64) default '' comment '創建者',create_time datetime comment '創建時間',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新時間',primary key (dept_id) ) engine=innodb auto_increment=200 comment = '部門表';-- ---------------------------- -- 初始化-部門表數據 -- ---------------------------- set character set utf8; insert into sys_dept values(100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(101, 100, '0,100', '深圳總公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(102, 100, '0,100', '長沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(103, 101, '0,100,101', '研發部門', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(104, 101, '0,100,101', '市場部門', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(105, 101, '0,100,101', '測試部門', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(106, 101, '0,100,101', '財務部門', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(107, 101, '0,100,101', '運維部門', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(108, 102, '0,100,102', '市場部門', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(109, 102, '0,100,102', '財務部門', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);要注意這里的設置編碼的地方
set names utf8; set character set? utf8; drop database if exists badao; CREATE DATABASE badao DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;判斷是否已經存在數據庫,存在則刪除掉,然后授予root權限。
最后刪除創建表,然后插入表數據時要注意,避免出現中文亂碼問題,在插入數據前要添加
set character set? utf8;比如:
-- ---------------------------- -- 初始化-部門表數據 -- ---------------------------- set character set? utf8; insert into sys_dept values(100,? 0,?? '0',????????? '若依科技',?? 0, '若依', '15888888888', '123qq.com', '0', '0', 'admin', sysdate(), '', null); insert into sys_dept values(101,? 100, '0,100',????? '深圳總公司', 1, '若依', '15888888888', '123qq.com', '0', '0', 'admin', sysdate(), '', null);6、構建鏡像
docker build -t mysqlwithdata .注意后面有個點,代表Dockerfile在當前目錄
7、運行容器
docker run -itd --name mysqlwithdata -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysqlwithdata8、運行成功后查看運行中的容器
docker ps9、此時訪問數據庫應該已經帶數據了
如果沒有數據,可以查看日志
docker logs -f mysqlwithdata如果要修改腳本或者配置文件等需要重新執行該過程,需要
停掉容器
docker stop mysqlwithdata刪除掉容器
docker rm mysqlwithdata刪除掉鏡像
docker rmi mysqlwithdata:latest然后修改后重新執行上面的過程。
總結
以上是生活随笔為你收集整理的CentOS中使用Dockerfile部署初始化sql文件的mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CeneOS中使用Docker安装Git
- 下一篇: SpringBoot打成jra包启动时读