乐闻世界logo
搜索文章和话题

如何在Docker容器中初始化带有模式的MySQL数据库?

3 个月前提问
2 个月前修改
浏览次数8

1个答案

1

在Docker中初始化带有模式的MySQL数据库主要包括以下几个步骤:

步骤1:创建Dockerfile和配置文件

首先,您需要创建一个Dockerfile来定制MySQL镜像。这通常涉及到设置初始配置和导入初始化SQL脚本。

例如,可以创建一个Dockerfile如下:

dockerfile
FROM mysql:5.7 ENV MYSQL_DATABASE company ENV MYSQL_ROOT_PASSWORD example ADD schema.sql /docker-entrypoint-initdb.d/ EXPOSE 3306

在这个Dockerfile中,我们从官方的MySQL 5.7镜像开始,设置环境变量 MYSQL_DATABASE 来指定数据库名称(在这个例子中是 company),MYSQL_ROOT_PASSWORD 设置数据库的根用户密码。然后,我们将包含数据库模式的 schema.sql 文件添加到容器中的 /docker-entrypoint-initdb.d/ 目录。这个目录是MySQL镜像用来查找在容器启动时运行的脚本的地方。

步骤2:编写数据库模式文件

schema.sql 文件包含了需要执行的SQL语句来定义数据库模式。例如:

sql
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, position VARCHAR(255) NOT NULL, salary DECIMAL(10, 2), hired DATE NOT NULL );

这个SQL脚本会在数据库初始化时创建一个名为 employees 的表。

步骤3:构建和运行Docker容器

一旦你有了Dockerfile和schema.sql文件,你可以使用以下命令来构建Docker镜像:

bash
docker build -t my-custom-mysql .

构建完成后,可以通过以下命令启动MySQL容器:

bash
docker run -d -p 3306:3306 --name my-mysql-instance my-custom-mysql

这条命令将容器中的3306端口映射到主机的3306端口,并在后台运行这个容器。

步骤4:验证数据库

一旦容器运行,你可以连接到MySQL服务器,检查是否所有的表和初始数据都已经根据 schema.sql 文件设置好了。可以使用MySQL客户端工具连接到数据库,或者使用命令行:

bash
mysql -h localhost -P 3306 --protocol=tcp -u root -p

然后检查数据库:

sql
USE company; SHOW TABLES; DESCRIBE employees;

这些步骤应该可以让你成功地在Docker容器中初始化一个带有模式的MySQL数据库。

2024年8月7日 10:01 回复

你的答案