默認(rèn)情況下叨襟,mysql鏡像創(chuàng)建的docker容器啟動時(shí)只是一個(gè)空的數(shù)據(jù)庫實(shí)例繁扎,為了簡化docker部署,我們需要在docker創(chuàng)建mysql容器的時(shí),數(shù)據(jù)庫和表已經(jīng)自動建好糊闽,初始化數(shù)據(jù)也已自動錄入梳玫,也就是說容器啟動后數(shù)據(jù)庫就可用了。這就需要容器啟動時(shí)能自動執(zhí)行sql腳本右犹。
在mysql官方鏡像中提供了容器啟動時(shí)自動執(zhí)行/docker-entrypoint-initdb.d
也就是說只要把你自己的初始化腳本放到/docker-entrypoint-initdb.d/
文件夾下就齊活了
# Dockerfile
FROM mysql:5.7.28
COPY ./db_aicube.sql /docker-entrypoint-initdb.d
docker啟動命令如下
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=db_aicube -d mysql:5.7.28
db.aicube.sql如下:
-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS db_aicube DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_croatian_ci;
-- 使用其數(shù)據(jù)庫
use db_aicube;
--
-- 表的結(jié)構(gòu) `auth_group`
--
CREATE TABLE `auth_group` (
`id` int(11) NOT NULL,
`name` varchar(150) COLLATE utf8_croatian_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci;
···