Docker中MySQL执行脚本
在使用Docker容器化部署MySQL数据库时,有时候我们需要执行一些脚本来初始化数据库、创建表结构或者插入数据。本文将详细介绍如何在Docker中执行MySQL脚本的方法。
准备工作
在开始之前,首先需要确保你已经安装好Docker并且了解一些基本的Docker命令。另外,本文假设你已经有一个运行中的MySQL容器,如果没有,可以通过以下命令启动一个MySQL容器:
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=root_password mysql:latest
执行SQL脚本
方法一:通过docker exec命令
一种方法是通过docker exec
命令在运行中的MySQL容器中执行SQL脚本。首先,将SQL脚本拷贝至MySQL容器内部:
docker cp script.sql mysql-container:/script.sql
然后,通过docker exec
命令执行脚本:
docker exec -i mysql-container mysql -uroot -proot_password < /script.sql
这样就可以在MySQL容器内部执行SQL脚本了。
方法二:通过Dockerfile
另一种方法是通过Dockerfile在构建MySQL镜像时执行SQL脚本。首先,创建一个Dockerfile,并在其中添加以下内容:
FROM mysql:latest
COPY script.sql /docker-entrypoint-initdb.d/
CMD ["mysqld"]
然后,在Dockerfile所在目录中放置你的SQL脚本script.sql
。接着构建镜像:
docker build -t custom-mysql .
最后,通过以下命令启动一个新的MySQL容器来应用SQL脚本:
docker run -d --name custom-mysql-container custom-mysql
示例
假设我们有一个名为init.sql
的SQL脚本,内容如下:
CREATE DATABASE IF NOT EXISTS sample_db;
USE sample_db;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
INSERT INTO users (name) VALUES ('Alice'), ('Bob'), ('Charlie');
我们可以通过上述方法之一,在MySQL容器中执行该脚本。如果一切顺利,执行完成后我们可以在数据库中看到sample_db
数据库和users
表已经创建,并且users
表中已经插入了三条记录。
总结
本文介绍了在Docker中执行MySQL脚本的两种方法:通过docker exec
命令和通过Dockerfile。无论哪种方法,都可以方便地在容器内部执行SQL脚本来初始化数据库或进行其他操作。