要在 Docker Compose 中配置 MySQL 容器,在容器启动时创建数据库,你可以按照以下步骤进行操作:
-
在你的 Docker Compose 文件中,定义一个 MySQL 服务。确保你已经设置了适当的环境变量,如
MYSQL_ROOT_PASSWORD
和MYSQL_DATABASE
。下面是一个示例的 Docker Compose 配置:
version: '3' services: db: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_database_name volumes: - ./data:/var/lib/mysql
在上述配置中,
MYSQL_ROOT_PASSWORD
是 MySQL 的 root 用户密码,MYSQL_DATABASE
是要创建的数据库名称。volumes
部分用于将 MySQL 数据持久化到本地目录。 -
保存并关闭 Docker Compose 文件。
-
使用以下命令启动 Docker Compose:
docker-compose up -d
这将会启动 MySQL 容器,并在启动过程中自动创建指定的数据库。
创建多个数据库
如果想在 Docker Compose 中创建多个数据库,你可以使用以下方法:
-
创建一个名为
init.sql
的 SQL 脚本文件,并在其中编写创建数据库的语句。例如,假设你要创建两个数据库database1
和database2
,你可以将以下内容保存到init.sql
文件中:CREATE DATABASE IF NOT EXISTS database1; CREATE DATABASE IF NOT EXISTS database2;
-
在你的 Docker Compose 文件中,将
init.sql
文件挂载到 MySQL 容器的/docker-entrypoint-initdb.d/
目录下,这样 MySQL 容器在启动时将自动执行该脚本。下面是一个示例的 Docker Compose 配置:
version: '3' services: db: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: your_root_password volumes: - ./data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql
在上述配置中,我们将
init.sql
文件挂载为/docker-entrypoint-initdb.d/init.sql
,这是 MySQL 容器的初始化脚本目录。保存并关闭 Docker Compose 文件。
使用以下命令启动 Docker Compose:
docker-compose up -d
这将会启动 MySQL 容器,并在启动过程中自动执行
init.sql
文件中的 SQL 语句来创建数据库。
现在,当你启动 Docker Compose 中的 MySQL 容器时,它将自动执行 SQL 脚本并创建指定的数据库。你可以根据需要在 init.sql
文件中添加其他 SQL 语句,如创建表、插入数据等。