如何在Docker中部署MySQL数据库?

数据库 MySQL
Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库。

 Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库。

本文中,我们会重点关注如下重点:

为MySQL Docker容器创建Docker Compose YAML文件。

使用各种方法连接到在容器上运行的MySQL数据库。

在Docker容器中创建并运行多个MySQL版本。

接下来,我们会逐一介绍这些。

1.为MySQL Docker容器创建Docker Compose YAML文件

首先,我们创建一个目录——db-docker,然后在这个目录中创建一个文件——docker-compose.yml。

  1. mkdir db-docker 
  2. cd db-docker 
  3. touch docker-compose.yml 

基本上,在这里,我们将指定我们将要使用的服务并设置与这些服务相关的环境变量。

我们将在本文中多次更改此文件。

在我们刚刚创建的docker-compose.yml文件中添加以下内容:

  1. version: '3' 
  2.  
  3. services: 
  4.  
  5.  mysql-development: 
  6.  image: mysql:8.0.17 
  7.  environment: 
  8.  MYSQL_ROOT_PASSWORD: helloworld 
  9.  MYSQL_DATABASE: testapp 
  10.  ports: 
  11.  - "3308:3306" 

我们将MySQL容器的名称指定为mysql-development,要使用的Docker镜像是mysql:8.0.17。 如果不将tag指定为8.0.17,则将采用最新的tag。

接下来我们需要指定的是环境变量,即用户,密码和数据库。 如果您未指定用户,则默认情况下它将为root。

我们将使用helloworld作为密码,使用testapp作为数据库。

另一个重要的是端口映射。 3308:3306表示在端口3306的容器中运行的MySQL映射到端口3308的主机的本地主机。您也可以使用不同的端口。

现在,在创建.yml文件之后,我们需要在.yml文件所在的同一目录中运行以下命令:

  1. docker-compose up 

这将拉取Docker镜像(如果镜像在本地不存在,它将从Docker Hub拉出)然后运行容器。

我们可以通过如下命令查看状态:

  1. docker-compose ps 
「Docker系列」 如何在Docker中部署MySQL数据库?

这将显示容器的名称,命令和容器的状态,例如,它显示容器正在运行。 它还显示了端口映射。

在下一步中,我们将连接到此MySQL容器并运行一些命令。

2.连接到Container中运行的MySQL数据库

我们将讨论在Docker容器中运行的MySQL上连接和运行SQL命令的两种方法。

第一种方法是使用像MySQL Workbench这样的工具(也可以使用DataGrip)。

现在我们得MySQL容器映射到宿主机得端口为3308,我们可以使用如下配置参数连接:

「Docker系列」 如何在Docker中部署MySQL数据库?

由于端口映射,只能通过宿主机的端口3308进行连接。

如果我们想连接到容器化的MySQL,不通过映射端口,即来自在同一个Docker网络上运行的另一个应用程序,我们必须使用像Adminer这样的工具,这是我们的另一种方法。

Adminer是一个基于PHP的Web应用程序,用于访问数据库。

现在,我们将在docker-compose.yml文件中添加另一项服务——Adminer。 但是,在我们进行更改之前,我们需要停止运行容器并使用以下命令将其删除:

  1. docker-compose down 

让我们在docker-compose.yml文件中添加以下内容:

  1. version: '3' 
  2. services: 
  3.  mysql-development: 
  4.  image: mysql:8.0.17 
  5.  environment: 
  6.  MYSQL_ROOT_PASSWORD: helloworld 
  7.  MYSQL_DATABASE: testapp 
  8.  ports: 
  9.  - "3308:3306" 
  10.   
  11.  admin:  
  12.  image: adminer  
  13.  ports:  
  14.  - "8080:8080" 

现在,我们再次启动Docker 容器:

  1. docker-compose up 

运行此操作后,将拉取Adminer的镜像,并启动MySQL和Adminer的容器。

我们可以使用docker-compose ps检查状态。

现在,我们可以访问我们的浏览器并转到localhost:8080 来访问Adminer。 由于Adminer运行在与MySQL相同的Docker网络上,它可以通过端口3306(或简单地通过容器名称)访问MySQL容器。

注意:我们无法在Adminer中通过端口3308访问MySQL容器,因为这将尝试访问Docker Compose网络的端口3308,而不是宿主机上的3308端口。

「Docker系列」 如何在Docker中部署MySQL数据库?

我们还可以在MySQL命令行界面中输入以下命令:

  1. docker-compose exec mysql-development mysql -uroot -phelloworld testapp 

3.在Docker容器中创建并运行MySQL的

  1. version: '3' 
  2. services: 
  3.  mysql-development: 
  4.  image: mysql:8.0.17 
  5.  environment: 
  6.  MYSQL_ROOT_PASSWORD: helloworld 
  7.  MYSQL_DATABASE: testapp 
  8.  ports: 
  9.  - "3308:3306" 
  10.   
  11.  admin:  
  12.  image: adminer  
  13.  ports:  
  14.  - "8080:8080" 
  15.  mysql-old: 
  16.  image: mysql:5.7.27 
  17.  environment: 
  18.  MYSQL_ROOT_PASSWORD: helloworld 
  19.  MYSQL_DATABASE: coolapp 
  20.  ports: 
  21.  - "3309:3306" 

总结

上述是个简单得MySQL容器化小案例。希望给大家带来点启发。

责任编辑:华轩 来源: 今日头条
相关推荐

2022-01-17 08:36:46

MySQLAmazon RDS 数据库

2021-12-03 23:21:45

数据库MySQLKubernetes

2020-11-13 09:22:32

Docker数据库容器

2011-03-03 10:00:14

ProFTPD建立MySQL

2009-01-19 09:14:31

.NETMySQLMySql驱动包

2009-07-07 14:56:33

JSP连接MySQL

2009-06-01 09:57:43

netbeans连接数netbeans数据库netbeans连接m

2020-10-21 10:16:03

AI保护公共安全?

2018-03-09 10:07:34

mysql

2022-04-22 09:20:06

FreeBSD 13MySQL数据库

2021-08-06 13:46:29

人工智能AI深度学习

2011-03-28 11:21:17

MySQL数据库储存图片

2011-07-29 11:20:51

MySQL数据库字段重复

2009-04-16 19:08:55

2011-07-26 14:34:28

openSUSEpostgresql

2023-09-05 08:40:57

删除数据库Oracle

2009-07-24 10:41:00

asp.net mvc

2011-03-02 17:41:28

2011-03-18 09:48:32

2011-03-11 13:26:23

SQL Server数导入数据
点赞
收藏

51CTO技术栈公众号