如果如果您是数据库管理员、数据科学家或开发人员,您可能需要使用MySQL来存储和操作数据。自从Docker成为一个受欢迎的DevOps工具,您需要知道如何在Docker容器中运行MySQL。一旦你完成了这个教程,你就可以使用Docker测试任何MySQL查询了。这种方法将节省您的时间和精力,因为您不必安装或配置MySQL。
设置
首先,您需要 安装Docker 。对于本例,我们将使用 Docker 撰写文件,一个SQL文件包含引导数据,也称为 mysql-dump 和苹果电脑。我们需要把两者docker-compose.yml和school.sql都放在同一文件夹中。此设置中使用的文件夹名称是MySQL-代码片段。
docker撰写:我们可以使用Docker编写来运行多个容器,并在YAML文件中定义它们的属性。这些容器被称为服务。当您的应用程序有多个堆栈时,比如一个web服务器和一个数据库服务器,这很有帮助。
MySQL-转储:mysql转储包含纯文本的MySQL查询。MySQL命令行客户端可以运行这些命令,并将它们发送到MySQL服务器。
让我们分解一下docker-compose.yml文件。
version: '3.1'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test_db
ports:
- "3307:3306"
volumes:
- $HOME/Desktop/MySQL-Snippets/school.sql:/school.sql
首先,我们使用一个版本标签来定义合成文件格式,即3.1。还有其他文件格式— 1、2、2.x和3.x。从Docker的文档中获取有关撰写文件格式的更多信息这里。
我们通过服务哈希来跟踪我们的版本标签。在这种情况下,我们必须定义我们希望应用程序使用的服务。对于我们的应用程序,我们只有一个服务叫做db。
为了使我们的设置过程快速简单,我们使用了预先构建的官方形象MySQL用于图像标签。
当我们使用总是对于restart标记,容器总是重新启动。它可以节省时间。例如,您不必每次手动重新启动计算机时都启动容器。当Docker守护程序重新启动或容器本身手动重新启动时,它会重新启动容器。
在环境标签下,我们已经定义了环境变量,我们将使用这些变量进行数据库身份验证。
端口标签用于定义主机端口和容器端口。它将主机上的端口3307映射到容器上的端口3306。
最后,卷标签用于将文件夹从主机装载到容器中。它由两个用冒号分隔的字段组成。第一部分是主机中的路径。第二部分是容器中的路径。如果您不想安装mysql转储,请删除这一部分 放进容器里。
太好了,你已经完成了这篇文章的设置。现在从相同的目录运行以下命令docker-compose.yml文件已找到。命令docker-compose up启动并运行整个应用程序。
docker-compose up
现在docker ps命令查看正在运行的容器列表。如我们所见,我们有一个名为mysql-snippets_db_1。
docker ps
我们还可以看到图像是通过运行创建的docker-images命令。
docker-images
访问正在运行的容器mysql-snippets_db_1通过运行以下命令。
docker exec-it MySQL-snippets _ db _ 1 bash
这docker exec命令允许我们进入正在运行的容器。旗帜-i -t(通常写为-它)用于以交互模式访问容器。现在我们提供了我们想要访问的容器的名称,在本例中mysql-snippets_db。这尝试命令用于在容器中获得一个bash shell,因此我们可以访问MySQL命令行并执行MySQL查询。
你刚刚安装完 container。现在,我们将介绍如何连接到MySQL服务器。
连接到MySQL服务器
使用您的用户名和密码连接到MySQL服务器根。一旦连接到服务器,您就可以运行MySQL命令。
MySQL-uroot-propt
这里有一个你可以尝试的例子:
显示数据库;
我们可以看到我们的数据库名为 test_db,在我们的撰写文件中定义。要选择数据库,请运行USE test_db;命令。使用 SHOW TABLES;命令来显示我们数据库中的所有表test_db。类型ctrl + L清空控制台。
因为我们没有任何表,所以命令显示表格;返回一个空集合。现在你已经确认你已经连接到了MYSQL服务器,你可以进入下一步了。
从文件中加载数据
现在我们可以将MySQL转储加载到我们的test_db数据库。在这种情况下school.sql。它在容器内部是可访问的,因为我们已经从主机装载了它。
mysql -uroot -p test_db < school.sql
使用用户名连接到MySQL服务器 root。输入密码root认证。现在我们将默认数据库设置为test_db。这<3C连同文件名一起用于向服务器发送命令。
import mysql dump to sql server
如果我们运行MySQL命令SHOW TABLES,我们可以看到两张叫做记号和学生在我们的数据库里test_db,它们在school.sql。
像MySQL这样的关系数据库在行业中经常使用,既然你已经完成了这个基本的教程,你就可以更深入地用Docker探索MySQL了。你可以在这里找到更多的MySQL命令。Docker彻底改变了我们管理环境的方式,包括开发、测试和生产。这就是为什么你必须为了个人和工业目的获得这种技能。我希望这能帮助你开始使用MySQL和Docker。
作者:Mahbub Zaman
文章来源:https://towardsdatascience.com/how-to-run-mysql-using-docker-ed4cebcd90e4