docker compose 配置 mysql 容器启动时创建数据库

要在 Docker Compose 中配置 MySQL 容器,在容器启动时创建数据库,你可以按照以下步骤进行操作:

  1. 在你的 Docker Compose 文件中,定义一个 MySQL 服务。确保你已经设置了适当的环境变量,如 MYSQL_ROOT_PASSWORDMYSQL_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 数据持久化到本地目录。

  2. 保存并关闭 Docker Compose 文件。

  3. 使用以下命令启动 Docker Compose:

    docker-compose up -d
    

    这将会启动 MySQL 容器,并在启动过程中自动创建指定的数据库。

创建多个数据库

如果想在 Docker Compose 中创建多个数据库,你可以使用以下方法:

  1. 创建一个名为 init.sql 的 SQL 脚本文件,并在其中编写创建数据库的语句。例如,假设你要创建两个数据库 database1database2,你可以将以下内容保存到 init.sql 文件中:

    CREATE DATABASE IF NOT EXISTS database1;
    CREATE DATABASE IF NOT EXISTS database2;
    
  2. 在你的 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 语句,如创建表、插入数据等。

posted @ 2023-06-27 16:05  ZnPi  阅读(2594)  评论(0编辑  收藏  举报