【Docker】(七)使用docker-compose一键部署环境

这篇具有很好参考价值的文章主要介绍了【Docker】(七)使用docker-compose一键部署环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

本系列文章记录了从0开始学习Docker的过程,Docker系列历史文章:

(一)基本概念与安装使用
(二)如何使用Docker发布一个SpringBoot服务
(三)使用registry远程镜像仓库管理镜像
(四)使用volume持久化Docker容器中的Redis数据
(五)使用bind mounts修改Docker容器中的Nginx配置
(六)使用network完成容器间的网络通信

在前面的几篇文章中,介绍了如何通过 Docker指令 来部署一个SpringBoot,以及如何使用已经构建好的中间件镜像来安装中间件,随着服务器节点中的容器数量增多,继续使用 指令的方式来管理容器,那管理的复杂度将会越来越高,例如:

  • 需要一个一个的创建不同的自定义volumenetwork,指令繁琐。
  • 需要手动创建服务,并挨个处理其容器卷与网络之间的对应关系。
  • 随着容器数量的上升,不容易处理不同容器分组的隔离关系。
  • ……

为了解决服务器中的容器管理问题,Docker的一个针对单机环境的服务编排工具,也就是Docker Compose。使用Docker Compose,可以通过yaml文件来管理容器,使用yaml中的标签来描述容器的各类信息,容器与Docker中个各类组件的关联关系,最终只需要使用docker comse up这一个指令,就可以将yaml中已配置好的容器启动起来。

同时,可以将已经编写好的docker-compose.yml文件分享给他人使用,例如,我可以编写一个搭建开发环境的docker-compose.yml文件,给同部门的其他同学使用,让他们也能够一键搭建工作所需的开发环境。
此外,在GitHub中,也有非常多的项目会提供docker-compse.yml文件,开发者可以通过这个文件来一键创建项目环境,例如在GitHub上搜索 elk,可以看到这样的结果:
【Docker】(七)使用docker-compose一键部署环境

2.安装与使用

2.1 安装与卸载

根据官网的描述,如果是在 Windows/Mac 环境中,通过 Docker Desktop 安装的Docker,就已经自带了 Docker Compose,如果是在Linux环境中,则需要自行安装Docker Compose插件。

我这里使用的是CentOS,通过yum安装非常简单,如果安装的版本不对,可以通过下面的指令卸载。

sudo yum update
sudo yum install docker-compose-plugin
# 卸载
sudo yum remove docker-compose-plugin

【Docker】(七)使用docker-compose一键部署环境
使用docker compose version查看版本,打印出版本号表示安装成功,如果是其他的环境,可以参考《Docker Compose 安装官方文档》

2.2 核心概念

Docker Compose 使用 docker-compose.yml来描述需要编排的服务信息,这样的一个文件启动后对应的是一个完整的业务单元,称为project。在project中,包含了networkvolume,以及多个容器的信息,我们把容器信息称为service。此外,在docker-compose.yml文件中还对应了语法解析版本:version

这里的version版本与 Docker的对应关系如下:
【Docker】(七)使用docker-compose一键部署环境
使用docker -v查看当前 Docker 的版本:
【Docker】(七)使用docker-compose一键部署环境
当前的 Docker 版本对应的 Compose 文件解析版本均可以使用。

2.3 基本语法及使用

现在通过创建MySQL容器来简单的演示一下如何使用compose文件,在上面的核心概念中,我们已经知道了,compose文件一共可以分成4个部分,分别为:

version: 
services:
volumes:
networks:

按照下面的步骤,将这几个标签依次填充起来。


第一步:指定文件版本号
可以按照上面的版本对应表找到可以使用的version版本号,此处我们选择3.8(注意此处为字符串),即:

version: '3.8'

第二步:创建volumes
需要将 MySQL 的数据文件挂载到宿主机中,需要创建 volumes ,此处我们创建一个mysql-data-volume作为 volume 的 name ,如果使用指令创建可以输入:

docker volume create mysql-data-volume

对应的,在compose文件中可以写成:

volumes:
  mysql-data-volume:
  # 当然,如果还要创建其他的volume,可以直接追加在下面
  other-volume:

第三步:创建network
如果不创建 network 则会使用默认的 docker 网络,但是我们一般会将有关联关系的一组应用放在一个自定义的网络中,所以此处我们创建一个 my-app-brigde 网络,创建方式与创建 volume 类似。

  • 使用指令的方式:
docker network create my-app-bridge
  • compose文件
networks:
  my-app-bridge:
    driver: bridge

第四步:创建MySQL容器
使用已经创建好的 network 与 volume 来创建MySQL容器:

  • 使用指令:
docker run -dp 3309:3306 \
--name=mysql \
--volume=mysql-data-volume:/var/lib/mysql \
--network=my-app-bridge \
-e MYSQL_ROOT_PASSWORD=huizhiyimo \
mysql
  • compose文件:
services:
  mysql:
    image: mysql
    ports:
      - "3309:3306"
    volumes:
      - mysql-data-volume
    networks:
      - my-app-bridge
    environment:
      MYSQL_ROOT_PASSWORD: huizhiyimo

综上,可以获取到一个完整的 docker-compose.yml 文件。

version: '3.8'
services:
  mysql:
    image: mysql
    ports:
      - "3309:3306"
    volumes:
      - mysql-data-volume
    networks:
      - my-app-bridge
    environment:
      MYSQL_ROOT_PASSWORD: huizhiyimo
volumes:
  mysql-data-volume:
networks:
  my-app-bridge:
    driver: bridge

将文件移动到服务器中,通过docker compose up -d 启动。
【Docker】(七)使用docker-compose一键部署环境
启动后,依次创建 Network , Volume , 并启动MySQL容器,注意上面的命名与实际启动后的名称差异,实际启动后的名称前面多了mysql_的前缀,这是因为使用 docker compose 启动,或默认拼接上当前目录名称的前缀。


注:同一目录下有多个compose.yml文件的时候,可以通过-f指定需要执行哪个文件,例如:docker compose -f docker-compose.yml up -d

2.4 一键部署环境

按照上面所说的语法,我们可以在 compose 文件中编写开发环境中所需要使用到的工具,例如:redis,nginx,mysql,rabbitMQ,Zookeeper等,可以按照需要添加自己所需的工具,compose 文件如下:

version: '3.8'
services:
  my-redis:
    image: "redis:alpine"
    ports:
      - "6379:6379"
    volumes:
      - my-redis-volume:/data
    restart: always
    networks:
      - dev-network
  my-nginx:
    image: "nginx"
    ports:
      - "80:80"
    volumes:
      - /usr/docker/nginx-conf:/etc/nginx/conf.d
    restart: always
    networks:
      - dev-network
  my-mysql:
    image: mysql
    ports:
      - "3309:3306"
    volumes:
      - my-mysql-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: huiyizhimo
    restart: always
    networks:
      - dev-network
  my-rabbitMQ:
    image: "rabbitmq:management"
    ports:
      - "5671:5671"
      - "5672:5672"
      - "15671:15671"
      - "15672:15672"
      - "25672:25672"
      - "4369:4369"
    hostname: "rabbit-server"
    volumes:
      - my-rabbit-volume:/var/lib/rabbitmq
    restart: always
    networks:
      - dev-network
  my-zookeeper:
    image: "zookeeper"
    ports:
      - "2181:2181"
    restart: always
    networks:
      - dev-network
volumes:
  my-redis-volume: {}
  my-mysql-volume: {}
  my-rabbit-volume: {}
networks:
  dev-network:
    driver: bridge

可以将这个文件在任何一个装有 Docker Compose 的机器中运行。
【Docker】(七)使用docker-compose一键部署环境
运行成功后,工具就可以直接使用了,使用zkTool链接成功。
【Docker】(七)使用docker-compose一键部署环境

2.5 部署GitHub中的开源项目

除了部署我们自己的环境之外,我们也可以在GitHub可以找到通过docker-compose.yml编排的开源项目docker-elk,尝试是否可以将它部署到服务器中。

首先,通过git下载到服务器中的/usr/docker目录中(这个目录是我自行创建的)

git clone https://github.com/deviantony/docker-elk

【Docker】(七)使用docker-compose一键部署环境

然后,进入到 docker-elk 目录中,通过 compose 文件部署服务。

cd docker-elk
docker compose up -d
# 查看compose列表
docker compose ls

【Docker】(七)使用docker-compose一键部署环境
这里可以注意一下上图中的执行顺序,启动成功后,通过 http://192.168.200.101:5601/login访问,(192.168.200.101是我本地安装的虚拟机ip地址,这里可以改成自己的服务器ip。),如下图,成功打开登录界面。
【Docker】(七)使用docker-compose一键部署环境
此外,我们也可以去查看 docker-elk 中的 docker-compose.yml 文件的编写内容,模仿其用法来编写自己的开源项目。

2.6 环境变量的使用

【Docker】(七)使用docker-compose一键部署环境
在 docker-elk 的 yml文件中,我们可以看到 ${xxx} 这样的语法,这个就是环境变量的使用,我们将变量的值写在.env文件中,在启动的时候,就可以将实际的变量值映射到 compose 文件中。
【Docker】(七)使用docker-compose一键部署环境

3.结语

使用 Docker Compose ,可以通过 docker-compose.yml 文件来替代 docker command 指令来编排容器,yml文件可以一目了然的看到容器之间的关系,避免了使用一大堆繁琐的指令。
同时,可以将已编写好的 compose 文件,共享给他人使用,起到了 一次编写,到处运行 的效果,减少了大量的重复工作。

由于微服务时代的到来,我们生产环境中的应用服务往往是多机多节点部署, Docker Compose 这种单机容器编排的方式使用的就越来越少了,转而使用 K8S 来进行服务的管理。


如果觉得本文对你有所帮助,可以帮忙点点赞哦!你的支持是我更新最大的动力!文章来源地址https://www.toymoban.com/news/detail-480070.html

到了这里,关于【Docker】(七)使用docker-compose一键部署环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • docker compose一键部署lnmt环境

    docker compose一键部署lnmt环境

    创建docker compose 目录 [root@localhost ~]#  mkdir -p /compose_lnmt 编写nginx的dockerfile文件 创建目录 [root@localhost compose_lnmt]# mkdir -p nginx [root@localhost nginx]# vim nginx.conf   [root@localhost nginx]# vim Dockerfile 创建数据存放目录 [root@localhost compose_lnmt]# mkdir -p /var/www/html/ [root@localhost compose_lnmt]# mkdir

    2024年02月14日
    浏览(10)
  • 使用docker、docker-compose部署微服务

    使用docker、docker-compose部署微服务

    这里已经在docker安装并启动好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。 注意如果配置文件中有Redis、MySQL、nacos这些的连接信息,需要把IP地址改为服务器的公网地址或者内网地址,不会连接不到。 我这里以微服务版若依的网关服务为例,上传到指定目录。 官方文档

    2024年02月10日
    浏览(7)
  • 一键卸载docker、docker-compose

    1、创建卸载文件: docker-uninstall.sh   docker-uninstall.sh 2、vim  docker-uninstall.sh,输入以下内容 # 卸载旧版本的Docker yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest          

    2024年02月03日
    浏览(5)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(11)
  • docker部署(使用docker-compose)手把手教程

    docker部署(使用docker-compose)手把手教程

    docker-compose.yml 文件内容  安装成功后,运行 docker ps 出现如下报错  表示未启动docker,运行下列语句即可 安装完成后,运行 赋予权限即可 在服务器上单独新建文件夹名为ruoyi-admin dockerfile文件如下  执行如下命令 这就构建出本地的镜像了。   依次再构建出ruoyi/ruoyi-xxl-job-adm

    2024年02月01日
    浏览(12)
  • 使用 docker-compose 部署 Jenkins

    使用 docker-compose 部署 Jenkins

    注:我是在虚拟机(Ubuntu)上部署了 docker-compose,然后才使用 docker-compose 部署 Jenkins! 关于如何在 Ubuntu 部署 docker-compose,可以看我其它的文章。 docker_jenkins_compose 目录下创建 docker-compose.yml 文件: 进入 docker-compose.yml 文件: 按下键盘上的 i ,进入可以编写的模式。 将下面的

    2024年02月17日
    浏览(8)
  • linux 一键安装docker docker-compose

    2024年02月16日
    浏览(9)
  • 使用docker-compose搭建lnmpr环境

    使用docker-compose搭建lnmpr环境

    源码gitee • 使用 Dockerfile 定义应用程序的环境。 • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 • 最后,执行 docker-compose up -d 命令来启动并运行整个应用程序。 nginx默认页面 php默认页面 php redis扩展信息 mysql未配置之前页面,出现的

    2024年02月14日
    浏览(14)
  • 一键安装和卸载docker及docker-compose

    一键安装和卸载docker及docker-compose

    代码: 其中往docker.service写systemd管理的内容也可以替换成如下内容: 运行结果:

    2024年02月12日
    浏览(5)
  • 使用docker-compose 部署 MySQL(所有版本通用)

    使用docker-compose 部署 MySQL(所有版本通用)

    我这里使用的是MySQL8.0.18,可以自行选择需要的版本。 这里需要给MySQL做点自定义的配置,比如时区字符编码等。 以交互式命令进入容器,也可以使用navicat等客户端连接,使用Docker安装MySQL会给root用户开启远程访问。 使用MySQL自带客户端连接工具连接 PS:如果远程连接不上可

    2024年02月04日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包