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

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

  1. 为MySQL Docker容器创建Docker Compose YAML文件。
  2. 使用各种方法连接到在容器上运行的MySQL数据库。
  3. 在Docker容器中创建并运行多个MySQL版本。

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

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

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

mkdir db-dockercd db-dockertouch docker-compose.yml

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

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

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

version: '3'services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "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文件所在的同一目录中运行以下命令:

docker-compose up

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

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

docker-compose ps

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

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

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

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

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

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

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

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

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

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

docker-compose down

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

version: '3'services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "3308:3306"  admin:  image: adminer  ports:  - "8080:8080"

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

docker-compose up

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

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

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

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

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

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

3.在Docker容器中创建并运行MySQL的多个版本

如果我们有一个使用其他版本MySQL的应用程序,我们也可以为它创建一个服务并在同一个Docker网络中运行它。

例如,如果我们需要MySQL版本5.7.27,我们需要对docker-compose.yml文件进行以下更改,停止运行容器,然后重新开始。

version: '3'services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "3308:3306"  admin:  image: adminer  ports:  - "8080:8080" mysql-old: image: mysql:5.7.27 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: coolapp ports: - "3309:3306"

总结

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

mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?相关推荐

  1. java8 lambda maplist排序_「java8系列」流式编程Stream

    前言 「Java8系列」神秘的Lambda 「Java8系列」神奇的函数式接口 继上两篇之后,本文已经java8系列的第三篇了.本篇文章比较长,但我希望大家都能认真读完.读不完可以先收藏,在找时间读. ...

  2. python羊车门问题_「羊车门」经典概率题中不换门选中车的概率是多少?

    今天用Python求解「羊车门」经典的概率问题,对概率学基础和Python语法的灵活运用有所收货. 本次「羊车门」求解过程采用的是:穷举法计算概率已验证概率学基础理论.期间重点借鉴了'奥卡姆剃刀的博客 ...

  3. docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像

    LNMP和LAMP是PHP常用的两种运行环境,L代表Linux,N代表Nginx,A代表Apache,M代表Mysql,P代表PHP.在文章<「PHP编程」安装开发环境太烦?告诉你几个简单方法, ...

  4. MySQL百一题库_「灵魂拷问」MySQL面试高频一百问(工程师方向)

    前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵. 那么如果真的删除了不该删除的文件,比如数据库. ...

  5. mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

  6. java8堆内存模型_「GC系列」JVM堆内存分代模型及常见的垃圾回收器

    1. 内存分代模型 为什么要说JVM的内存分代模型呢,因为内存分代和垃圾回收器的运行是有关系的. 现在大部分用到的垃圾回收器在逻辑上是分代的,除了G1之外的其他垃圾回收器在逻辑上和物理上都是分代的. ...

  7. flask中文文档_「Flask系列」 初识Flask

    引子 作者有多年的编程打杂经验,之前一直参与基于Java的各种项目以及产品规划与设计,后因自己创业维持一家小公司,有些项目与产品,想降低开发成本,故在公司内部推行基于Python Flask的后端开发 ...

  8. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  9. opc服务器组态文件已写保护_「杰控软件」OPC代理服务,通过OPC方式采集远程OPC服务...

    34.OPC 代理服务 34.1 OPC 代理服务.实现功能  由两个只需拷贝的文件组成,拷贝到远程计算机任何目录,脱离组态软件运行;  通过 OPC 方式采集远程 OPC 服务器数据;  对采 ...

最新文章

  1. PyCharm使用笔记
  2. 驭下术:如何让下属老实听话?用这3招,让你不怒自威
  3. C++ STL 算法精选之查找篇
  4. 查看凭证更改记录的三种方式
  5. css规则可以放在云上,CSS中!important规则的使用方法
  6. 2021-06-16volatile的三种特性
  7. SQLyog12.08安装详细教程
  8. python爬取阳光问政
  9. 房贷新政刺激换房需求 北京楼市成交量反弹
  10. wamp5如何配置多个自定义域名访问本地不同的项目
  11. php msg oob,一个例子说明 MSG_OOB MSG_PEEK MSG_DONTWAIT
  12. 一个在线运行的Taro小程序完整实例
  13. 收款神器!解读聚合收款码背后的原理
  14. (Win10+vs2017)配置OpenCV开发环境
  15. 磁共振计算机都是量子技术吗,IBM利用磁共振对单个原子成像,未来用于量子计算机...
  16. NFS 服务 lap1+lap2+mysql+nfs
  17. 阿里云服务器相关操作
  18. 银行各个岗位及薪酬排名出炉(供参考)
  19. 互联网行业人才缺口到底有多大?
  20. 情感AI技术厉害了!看了才知道!!

热门文章

  1. 深度|数据库产品如何选型?掌握这一招就够了
  2. Java设计模式学习总结(3)——创建型模式之抽象工厂模式
  3. Java基础学习总结(111)——Java虚拟机JVM总结大全
  4. 软件实施提升效率的五个工具
  5. App后台开发运维和架构实践学习总结(1)——App后台核心技术之用户验证方案
  6. Mysql学习总结(17)——MySQL数据库表设计优化
  7. Java Web学习总结(16)——JSP的九个内置对象
  8. [20180123]测试SQLNET.EXPIRE_TIME参数.txt
  9. 《SEO的艺术(原书第2版)》——3.11 为意识形态影响力开展SEO
  10. angularjs--resource