目录
关于 init.sql 文件
构建和运行 MySQL 容器
# 使用 MySQL 8.0 作为基础镜像
FROM mysql:8.0# 设置 MySQL 的环境变量
ENV MYSQL_ROOT_PASSWORD=78910
ENV MYSQL_DATABASE=mydb
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=123456# 复制自定义的初始化 SQL 文件到容器中
# 注意:确保 init.sql 文件位于 Dockerfile 所在目录
COPY init.sql /docker-entrypoint-initdb.d/# 暴露 MySQL 的默认端口
EXPOSE 3306# 可选:设置工作目录(如果需要)
# WORKDIR /var/lib/mysql
关于 init.sql
文件
示例中,init.sql
文件被复制到 /docker-entrypoint-initdb.d/
目录。MySQL 容器会自动执行该目录下的所有 SQL 文件。以下是一个简单的 init.sql
示例,用于初始化数据库和用户权限:
-- init.sql
-- 创建一个测试表
CREATE TABLE mydb.test_table (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL
);-- 插入一些测试数据
INSERT INTO mydb.test_table (name) VALUES ('Kimi'), ('Docker');
构建和运行 MySQL 容器
构建镜像
将上述 Dockerfile 和 init.sql
文件保存在同一目录下,然后运行以下命令构建镜像:
docker build -t my-mysql-image .
运行容器
构建完成后,运行以下命令启动 MySQL 容器:
docker run --name my-mysql-container -d -p 3306:3306 my-mysql-image
-d
表示后台运行容器。
-p 3306:3306
将容器的 3306 端口映射到宿主机的 3306 端口。
验证容器运行
可以通过以下命令连接到 MySQL 容器,验证是否正常启动:
docker exec -it my-mysql-container mysql -uroot -p
输入密码 78910
后,即可进入 MySQL 命令行。