在之前的章节中,我们有介绍到使用 Docker-compose 创建 MySQL服务。当时的做法是在构建自定义MySQL镜像时帮我们创建数据库,并执行初始化的sql脚本。但是这种方式有个缺点,就是无法创建多个数据库。
本章重点讲解如何在构建容器时,创建多个数据库,执行多个数据库脚本。
目录结构
创建 docker-compose.yml 文件
文件内容如下:
version : '3.8'services:ruoyi-mysql:container_name: ruoyi-mysqlimage: mysql:5.7build:context: ./mysqlvolumes:- ./mysql/conf:/etc/mysql/conf.d- ./mysql/logs:/logs- ./mysql/data:/var/lib/mysqlports:- "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# authorMAINTAINER 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/bashmysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOFsource $WORK_PATH/ry_20210908.sqlsource $WORK_PATH/ry_config_20210730.sql
拷贝 sql 脚本
启动服务
docker-compose up
结果


