如何将mysql docker容器用作本地开发的mysql服务器?

8

我对Docker技术还不熟悉。迄今为止,我一直在使用Xampp开发PHP。最近,在我的本地主机上安装了Docker,并仔细阅读了文档。现在是实践的时候了。我知道如何运行Docker镜像,但我想学习在本地开发中使用mysql Docker容器的最佳方式。

我打算使用mysql Docker容器代替Xampp中的mysql。希望能得到最佳配置方面的帮助。

3个回答

9

学习新技术是很好的。您想要使用MySQL容器代替XAMPP堆栈中的MySQL。应该优先选择官方镜像。您可以在hub.docker.com上搜索Docker镜像。您需要从命令行运行此命令。

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=db-password -v /my/own/datadir:/var/lib/mysql mysql

上述命令将创建名为mysql的docker容器。您可以使用用户名root和在命令中提供的密码,在127.0.0.1:3306上访问该容器。 您的mysql数据将存储在/my/own/datadir目录中。因此,您的数据将在重新启动后保留。
现在是时候将本地mysql服务器数据转储到容器mysql中了。您可以使用以下命令转储数据。假设您已经创建了备份转储文件(例如dbdump.sql)。将dbdump.sql文件复制到“/my/own/datadir/”目录下。
现在运行此命令。
docker exec -i -t mysql

在容器内部输入以下命令。

cd /var/lib/mysql
mysql -uroot -p < dbdump.sql

注意:在执行上述命令之前,您需要停止xampp的mysql服务。当被询问密码时,请输入密码。

我正在遵循你的指示。我的dbdump文件大小为5.6 GB。我运行了你的命令,已经过去1个小时了,它仍在运行中。还需要多长时间才能完成?这正常吗? - Om Puri
这取决于电脑配置。我的意思是硬盘的读写速度和网络配置。你的转储文件非常大。所以,在你的情况下,这是正常的。 - Virendra Jadeja
非常感谢。我想要这种类型的容器。 - Om Puri

7
所以,我个人最喜欢的方法是使用一个叫做docker-compose的工具。它允许您定义一个简单的yaml文件,然后您就可以访问一些额外的命令,这些命令以docker-compose为前缀。例如:docker-compose builddocker-compose up等,这使得它比运行一堆独立的docker命令并记住容器名称进行容器链接等更方便。
为了帮助理解,看这个docker-compose.yaml示例。在这个文件中,您可以方便地声明您的服务(在本例中是dbphpansible,每个服务都将是一个单独的容器),以及它们如何相互依赖,每个容器的Dockerfile路径(build)和其他好东西。
你还可以为容器指定环境信息(对于我提供的Docker Compose,你可以在其中看到端口环境变量等指定容器所需信息的内容)。在示例Docker Compose文件中,你可以在db:服务的environment:部分中轻松地指定这些信息。启动容器后,这些值将自动用于安装/设置mysql,因此非常容易使用一个命令运行/配置与其他容器链接的mysql。此外,你还可以为容器指定其他环境变量(通常每个环境变量都有多个),请点击此处查看列表。

看一下我为LAMP堆栈开发制作的Docker设置这里。我在自己的Github上有几个不同的设置,但如果你搜索Github,你可以找到很多docker/docker-compose设置。当我需要回顾如何设置某些东西时,它们帮助我变得更加熟悉Docker(有时仍然是如此)。

一个非常有用的入门指南可以在这里找到。Docker compose使我的工作流程变得更容易理解/实现了好几次。它绝对值得一看。


我该如何使用docker-compose导入我的数据库转储? - Om Puri
非常感谢。这将对我学习Docker非常有帮助。您使用Docker Compose的想法非常好。 - Om Puri

1

请查看此链接,其中包含以下部分

卷: db_data:/var/lib/mysql

MySQL将安装在单独的容器中,但其/var/lib/mysql路径映射到文件夹“db_data”。因此,所有数据库都存储在db_data文件夹中。

PHP :

... depends_on: db 这里PHP容器与MySQL容器相连。

请查看以下链接以获取详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接