在 Docker 中创建 MySQL 数据库和表,我们通常使用 Dockerfile 和 SQL 脚本进行操作。以下是具体步骤:
-
创建 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
的表。 -
创建 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
目录。 -
构建和运行 Docker 镜像
在你的命令行或终端中,转到含有 Dockerfile 和
init.sql
的目录,然后运行以下命令来构建 Docker 镜像:docker build -t mymysql .
当构建完成后,你可以运行新的 Docker 镜像:
docker run --name some-mysql -d mymysql
现在,当 MySQL 容器启动时,你的数据库和表会自动被创建。
这样,你就可以在 Docker 镜像中自动创建 MySQL 数据库和表了。