在使用 Docker Compose 和 MySQL 容器时,你可以通过以下步骤指定在每次容器启动时执行数据库迁移的 SQL 文件:

1. 创建一个目录,用于存放数据库迁移的 SQL 文件,例如 `migrations`。

2. 将数据库迁移的 SQL 文件放置在该目录中,例如 `migrations/migration.sql`。

3. 创建一个 `docker-compose.yml` 文件,并定义 MySQL 服务和相关配置。在该文件中,可以使用 `volumes` 关键字将数据库迁移目录挂载到容器中的特定路径,并执行相应的初始化脚本。

   ```yaml
   version: '3'
   services:
     mysql:
       image: mysql
       volumes:
         - ./migrations:/docker-entrypoint-initdb.d
         - ./data:/var/lib/mysql
       environment:
         - MYSQL_ROOT_PASSWORD=your_password
   ```

   上述配置中,`./migrations:/docker-entrypoint-initdb.d` 将 `./migrations` 目录挂载到容器的 `/docker-entrypoint-initdb.d` 目录中。MySQL 容器在启动时会自动执行该目录下的 SQL 文件。

4. 在终端中,使用以下命令启动容器:

   ```bash
   docker-compose up
   ```

   容器将启动,并且 MySQL 服务会执行挂载的数据库迁移 SQL 文件。

注意事项:

- 确保 `docker-compose.yml` 文件和数据库迁移的 SQL 文件(`migrations/migration.sql`)在同一个目录下。

- 在 `docker-compose.yml` 文件的 `mysql` 服务中,可以根据需要自定义其他的 MySQL 配置,如数据库名称、用户名、密码等。

- MySQL 容器会在每次启动时执行 `/docker-entrypoint-initdb.d` 目录中的 SQL 文件,因此请确保该目录只包含需要执行的迁移 SQL 文件,避免执行不必要的脚本。

- 对于已经运行过的 MySQL 容器,如果需要重新执行迁移操作,可以停止并删除容器,然后重新运行 `docker-compose up`。

这样,每次启动 MySQL 容器时,指定的数据库迁移 SQL 文件都会被执行,确保数据库的迁移操作得以完成。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐