Docker为部署和测试作为应用程序不可或缺的一部分的应用程序和数据库提供了许多优势,因此非常值得学习如何在Docker容器中部署和运行数据库。在本文中,我们将重点关注以下要点:为MySQLDocker容器创建DockerComposeYAML文件。使用各种方法连接到容器上运行的MySQL数据库。在Docker容器中创建和运行多个MySQL版本。接下来,我们将对这些一一进行介绍。1.为MySQLDocker容器创建一个DockerComposeYAML文件首先,我们创建一个目录——db-docker,然后在这个目录下创建一个文件——docker-compose.yml。mkdirdb-dockercddb-dockertouchdocker-compose.yml基本上,在这里我们将指定我们将使用的服务并设置与这些服务相关的环境变量。我们将在本文中多次更改此文件。在我们刚刚创建的docker-compose.yml文件中添加以下内容:version:'3'services:mysql-development:image:mysql:8.0.17environment:MYSQL_ROOT_PASSWORD:helloworldMYSQL_DATABASE:testappports:-"3308:3306"我们将MySQL的容器的名称指定为mysql-development,要使用的Docker映像是mysql:8.0.17。如果标签未指定为8.0.17,将使用最新的标签。接下来我们需要指定的是环境变量,即用户、密码和数据库。如果不指定用户,则默认为root。我们将使用helloworld作为密码,使用testapp作为数据库。另一个重要的事情是端口映射。3308:3306表示在容器中运行的MySQL的3306端口被映射到主机的localhost的3308端口。您也可以使用不同的端口。现在,创建完.yml文件后,我们需要在.yml文件所在的同一目录下运行以下命令:来自DockerHub),然后运行容器。我们可以使用以下命令检查状态:docker-composeps这将显示容器的名称、命令和容器的状态,例如,它显示容器正在运行。它还显示端口映射。在下一步中,我们将连接到这个MySQL容器并运行一些命令。2.连接到容器中运行的MySQL数据库我们将讨论两种连接和运行SQL命令到运行在Docker容器中的MySQL的方法。第一种方法是使用像MySQLWorkbench这样的工具(也可以使用DataGrip)。现在我们的MySQL容器映射到宿主机的3308端口,我们可以使用如下配置参数进行连接:由于端口映射,只能通过宿主机的3308端口连接。如果我们想连接到容器化的MySQL,而不是通过映射端口,即从运行在同一Docker网络上的另一个应用程序,我们必须使用像Adminer这样的工具,这是我们的另一种方法。Adminer是一个基于PHP的Web应用程序,用于访问数据库。现在,我们将在docker-compose.yml文件中添加另一个服务-Adminer。但是,在我们进行更改之前,我们需要停止正在运行的容器并将其删除:docker-composedown让我们将以下内容添加到我们的docker-compose.yml文件中:version:'3'services:mysql-development:image:mysql:8.0.17environment:MYSQL_ROOT_PASSWORD:helloworldMYSQL_DATABASE:testappports:-"3308:3306"admin:image:adminerports:-"8080:8080"现在,我们再次启动Docker容器:docker-composeup运行后,它会拉取Adminer镜像,并启动MySQL和Adminer容器。我们可以使用docker-composeps检查状态。现在,我们可以通过浏览器访问localhost:8080来访问Adminer。由于Adminer与MySQL在同一Docker网络上运行,因此它可以访问端口3306上的MySQL容器(或仅通过容器名称)。注意:我们无法在Adminer的3308端口上访问MySQL容器,因为这将尝试访问DockerCompose网络的3308端口,而不是主机上的3308端口。我们也可以在MySQL命令行界面输入如下命令:docker-composeexecmysql-developmentmysql-uroot-phelloworldtestapp3.在Docker容器中创建并运行MySQL版本:'3'services:mysql-development:image:mysql:8.0.17environment:MYSQL_ROOT_PASSWORD:helloworldMYSQL_DATABASE:testappports:-"3308:3306"admin:image:adminerports:-"8080:8080"mysql-old:image:mysql:5.7.27environment:MYSQL_ROOT_PASSWORD:helloworldMYSQL_DATABASE:coolappports9:-3"maryThe303总结以上就是MySQL容器化的一个简单案例,希望能给大家带来一些启发。
