在Docker建立的Mysql容器啟動時執行sql

2021-09-12 12:05:41 字數 2094 閱讀 2700

–我們有時需要在mysql容器啟動時執行sql建表, 那麼我們就可以在構建映象時,指定容器要執行的sql.

步驟:1.準備建資料庫表的檔案init_db.sql: (檔名需要對應和dockerfile定義要執行的sql檔名一樣)

create database if not exists `test`;

use `test`;

create table `people` (

`id` varchar(32) not null,

`name` varchar(64) not null

);

2.準備插入資料庫的檔案init_data.sql:

insert into `people` (`id`,`name`) values ('007','詹姆斯邦德');
3.建立執行sql的shell指令碼createdb.sh:

#這個指令碼是登入mysql並執行指定的sql檔案

mysql -uroot -p$mysql_root_password <4.建立dockerfile檔案:

#基礎映象使用的是mysql:latest(mysql:8)

from mysql:latest

#定義工作目錄變數

env work_path /usr/local/work

#定義會被容器自動執行的目錄

env auto_run_dir /docker-entrypoint-initdb.d

#定義要執行的sql檔名

env file_0 init_db.sql

env file_1 init_data.sql

#定義要執行的shell檔名

env create_data_shell createdb.sh

#建立工作檔案目錄

run mkdir -p $work_path

#把sql檔案複製到工作目錄下

copy ./$file_0 $work_path/

copy ./$file_1 $work_path/

#把要執行的shell檔案放到/docker-entrypoint-initdb.d/目錄下,容器會自動執行這個shell

copy ./$create_data_shell $auto_run_dir/

#給執行檔案增加可執行許可權

run chmod a+x $auto_run_dir/$create_data_shell

5.把上述檔案都放在同一目錄下(如我都放在c:\users\z2\desktop\docker下),並在該目錄下執行docker build -t test_mysql .構建映象,

6,執行docker images檢視映象:

7.執行docker run --name mytestsql -e mysql_root_password=123456 -idt test_mysql啟動容器:

8.執行docker ps檢視執行的容器:

9.執行docker exec -it mytestsql /bin/bash以互動式方式進入容器命令列:

10,登入容器的mysql:

11.檢視資料是否執行成功:

12. 到此我們的操作成功完成!,

若要了解win10下如何在docker容器中分別執行mysql, redis, springboot專案,

請移步至我的github: docker執行springboot專案

在docker中建立mysql

我的mysql映象版本是8.0 記錄一下出現的意外情況 我是以下面的命令來進行安裝 sudo docker run name mysql 2 d restart always p 5002 3306 e mysql root password yourpasswd v pwd db2 data va...

Docker建立MySQL容器

本文目的是建立乙個mysql的image,並且在新建立出來的容器裡自動啟動mysql服務接受外部連線 步驟 1.首先建立乙個目錄並在目錄下建立乙個dockerfile,檔案內容如下 from centos centos6 maintainer fanbin kong kongxx hotmail.c...

Docker建立MySQL容器

本文目的是建立乙個mysql的image,並且在新建立出來的容器裡自動啟動mysql服務接受外部連線 步驟 1.首先建立乙個目錄並在目錄下建立乙個dockerfile,檔案內容如下 from centos centos6 maintainer fanbin kong kongxx hotmail.c...