MySQL作为数据库打包成docker镜像,应该如何让它自己创建需要的表?

在 Docker 中创建 MySQL 数据库和表,我们通常使用 Dockerfile 和 SQL 脚本进行操作。以下是具体步骤:

  1. 创建 SQL 脚本

    在你的项目文件夹中,创建一个名为 init.sql 的文件,然后在该文件中添加 SQL 命令来创建数据库和表。例如:

    CREATE DATABASE IF NOT EXISTS mydb;
    USE mydb;
    
    CREATE TABLE IF NOT EXISTS mytable (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        email VARCHAR(255)
    );
    

    以上脚本创建了一个名为 mydb 的数据库,并在其中创建了一个名为 mytable 的表。

  2. 创建 Dockerfile

    在你的项目文件夹中,创建一个 Dockerfile。在该 Dockerfile 中,你需要从官方的 MySQL 镜像开始构建,并将你的 init.sql 文件复制到一个特殊的目录 /docker-entrypoint-initdb.d。当 MySQL 容器启动时,它会自动运行这个目录下的所有脚本。以下是一个 Dockerfile 的例子:

    FROM mysql:5.7
    
    # 设置环境变量
    ENV MYSQL_ROOT_PASSWORD rootpass
    ENV MYSQL_DATABASE mydb
    ENV MYSQL_USER myuser
    ENV MYSQL_PASSWORD mypass
    
    # 复制 init.sql 文件到/docker-entrypoint-initdb.d 目录下
    COPY init.sql /docker-entrypoint-initdb.d
    

    以上 Dockerfile 设置了 MySQL 的环境变量,用于配置 root 用户的密码,数据库名,以及一个普通用户及其密码。然后,它将 init.sql 文件复制到了 /docker-entrypoint-initdb.d 目录。

  3. 构建和运行 Docker 镜像

    在你的命令行或终端中,转到含有 Dockerfile 和 init.sql 的目录,然后运行以下命令来构建 Docker 镜像:

    docker build -t mymysql .
    

    当构建完成后,你可以运行新的 Docker 镜像:

    docker run --name some-mysql -d mymysql
    

    现在,当 MySQL 容器启动时,你的数据库和表会自动被创建。

这样,你就可以在 Docker 镜像中自动创建 MySQL 数据库和表了。

猜你喜欢

转载自blog.csdn.net/m0_57236802/article/details/131619198