虛擬機 dockerfile創建mysql8數據庫,初始化讀取sql文件


本人想要用dockerfile直接創建mysql8數據庫,並且初始化讀取數據庫,看了網上的不少教程,踩過了好多坑,現在記錄一下創建過程:

、用的是vmware安裝centos7系統

    1. 首先要安裝docker環境,教程連接:https://www.cnblogs.com/mo-nian/p/12485210.html

 

    2. 新建Dockerfile文件: vi  Dockerfile

FROM daocloud.io/library/mysql:8

MAINTAINER BolingCavalry <zq2599@gmail.com>

ENV WORK_PATH /usr/local/work
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

ENV FILE_0  init.sql
ENV INSTALL_DATA_SHELL install_data.sh

RUN mkdir -p $WORK_PATH
COPY ./$FILE_0 $WORK_PATH/
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/
EXPOSE 3306
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL

 3. 新建 install_data.sh 文件:

vi  install_data.sh

4. 修改執行腳本執行權限: 

 chmod +x install_data.sh

5. install_data.sh 文件內容(登錄mysql執行讀取SQL文件):

#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
source $WORK_PATH/$FILE_0;

6. 創建 init.sql 文件:

SET NAMES utf8;

CREATE DATABASE If Not Exists db_student Character Set utf8;
CREATE USER 'userm'@'localhost' IDENTIFIED BY '123456';
GRANT all ON db_student.* TO 'userm'@'localhost';
GRANT all ON db_student.* TO 'root'@'%';

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

7. 創建mysql鏡像:

docker  build -t   mysql8:latest .

8. 查看鏡像:docker  images 

    啟動鏡像:

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql8:latest

9.  查看容器id:docker  ps

docker  ps

10. 進入容器: 

docker  exec -it    792039hda    bash 

11. 登錄mysql:

 mysql  -u  root  -p           

     輸入密碼:123456

     查看數據: show  databases;

      可以看到數據庫存在讀入init.sql的數據。

 


免責聲明!

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



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