在之前的章节中,我们有介绍到使用 Docker-compose 创建 MySQL服务。当时的做法是在构建自定义MySQL镜像时帮我们创建数据库,并执行初始化的sql脚本。但是这种方式有个缺点,就是无法创建多个数据库。
本章重点讲解如何在构建容器时,创建多个数据库,执行多个数据库脚本。
目录结构
创建 docker-compose.yml 文件
文件内容如下:
version : '3.8'
services:
ruoyi-mysql:
container_name: ruoyi-mysql
image: mysql:5.7
build:
context: ./mysql
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/logs:/logs
- ./mysql/data:/var/lib/mysql
ports:
- "3306:3306"
command: [
'mysqld',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
environment:
# MYSQL_DATABASE: 'ry-cloud'
MYSQL_ROOT_PASSWORD: password
创建 dockerfile 文件
# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi
#定义工作目录, 这个环境变量在 init.sh脚本也会用到,
ENV WORK_PATH /data/init/
# 将要创建容器初始化的脚本拷贝到容器中
COPY ./db/ry_20210908.sql $WORK_PATH/
COPY ./db/ry_config_20210730.sql $WORK_PATH/
# 拷贝 .sh 脚本到 /docker-entrypoint-initdb.d/ 目录下,该脚本会被自动执行
ADD ./sh/init.sh /docker-entrypoint-initdb.d/
创建 init.sh 脚本文件
#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
source $WORK_PATH/ry_20210908.sql
source $WORK_PATH/ry_config_20210730.sql
拷贝 sql 脚本
启动服务
docker-compose up