在开发和测试过程中,有时我们希望在单个Mariadb容器中创建多个数据库,而不必编写SQL脚本手动创建。Docker Compose提供了一种简单方便的方式来定义和管理多个容器,我们可以利用它来实现这个需求。
使用Docker Compose创建多个数据库
在Docker Compose文件中,我们可以使用docker-compose.yml
定义多个服务,并且每个服务都可以使用一个预先配置的SQL初始化脚本来创建数据库。以下是一个示例的docker-compose.yml
文件:
version: '3.7'
services:
mariadb:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: database1
# 更多数据库可以通过环境变量继续添加
# MYSQL_DATABASE_2: database2
# MYSQL_DATABASE_3: database3
volumes:
- mariadb_data:/var/lib/mysql
ports:
- "3306:3306"
# 定义数据卷以持久化数据库数据
volumes:
mariadb_data:
解释
image
: 指定使用的Mariadb镜像。restart
: 设置容器遇到错误时自动重启。environment
: 定义环境变量,其中MYSQL_ROOT_PASSWORD
指定root用户的密码,MYSQL_DATABASE
用于指定要创建的第一个数据库。可以通过类似MYSQL_DATABASE_2
的方式继续添加更多的数据库。volumes
: 将容器内的/var/lib/mysql
目录挂载到宿主机上,以持久化数据库数据。ports
: 将容器的3306端口映射到宿主机的3306端口,以便外部可以访问数据库。
示例
假设我们想要创建三个数据库database1
、database2
和database3
,我们可以按照以下步骤在单个Mariadb容器中创建这些数据库:
- 创建一个名为
docker-compose.yml
的文件,并将上述示例内容复制粘贴到文件中。 - 运行以下命令启动容器:
docker-compose up -d
结论
通过以上步骤,我们成功地在单个Mariadb容器中使用Docker Compose创建了多个数据库。这样可以简化开发和测试过程中的数据库管理,提高工作效率。