当前位置: 首页 > news >正文

Docker进阶 - 11. Docker Compose 编排服务

注:本文只对一些重要步骤和yml文件进行一些讲解,其他的具体程序没有记录。

目录

1. 原始的微服务工程编排(不使用Compose)

2. 使用Compose编排微服务

2.1 编写 docker-compose.yml 文件

2.2 修改并构建微服务工程镜像

2.3 启动 docker-compose 服务


1. 原始的微服务工程编排(不使用Compose)

 用 mysql,redis以及微服务工程这三个容器实例举例。如果不使用 Compose,需要如下操作:

  • 首先单独 docker run mysql容器实例
  • 然后单独 docker run redis容器实例
  • 将微服务工程打包成一个新的镜像,最后单独 docker run 微服务容器实例

但上述操作需要注意的是:

  • 先后顺序需要固定,先mysql + redis 才能使用微服务访问成功
  • 在编写微服务工程中的yml文件,对于redis等相关配置中,需要写ip,但如果容器间的启停导致ip发生变化,映射会出现错误,如下图


2. 使用Compose编排微服务

2.1 编写 docker-compose.yml 文件

(1) 首先定义 microService 服务,其中 microService 为服务名,可以自己定义。

上述配置,等价于执行下面操作:

docker run -d -p 6001:6001 -v /app/microService:/data --network atguigu_net --name ms01 zzyy_docker:1.6

(2) 然后定义 redis 服务 和 mysql 服务。

 注意:

  • 其中 command 类似于docker run -it 后面进入容器后执行的命令,如 docker run -it ubuntu /bin/bash 中的 /bin/bash
  • redis服务 和 mysql服务 里相较于 microService服务 没有写容器名,那系统会默认给服务名增加前后缀生成一个新的容器名
  • microService 服务中的 depends_on 定义了容器启动顺序,解决了容器之间的依赖关系
  • microService 服务、redis服务 和 mysql服务的 networks都为一个网络,以至于能够使用服务名来代替ip地址

(3) 最后定义采用的网络,下面的语句相当于执行 docker network create atguigu_net 命令


2.2 修改并构建微服务工程镜像

(1) 修改微服务项目中的配置文件,将之前的固定ip地址修改为服务名。如下图:

(2) 使用mvn package命令将微服务形成新的 jar 包,并上传到宿主机服务器下。

(3) 编写Dockerfile,将微服务工程打包成一个新的镜像 docker build -t zzyy_docker:1.6,注意 jar包的位置和Dockerfile的位置以及在2.1配置的yml文件位置要一样,如下图:


2.3 启动 docker-compose 服务

(1) 检查编写的yml文件是否有问题,如有问题则控制台输出错误信息

docker-compose config -q

(2) 启动所有 docker-compose 服务(并后台运行:可选) 

docker-compose up -d

(3) docker-compose 关停所有服务 

docker-compose stop

注:本文部分文字内容来自于 使用compose编排服务 的学习笔记,仅供参考。如看其他Docker内容,可看我博客Docker系列aaron_neil_Dcoker系列,持续更新中。

http://www.lryc.cn/news/3140.html

相关文章:

  • 福利篇2——嵌入式岗位笔试面试资料汇总(含大厂笔试面试真题)
  • [ubuntu]LVM磁盘管理
  • 开源流程引擎Camunda
  • 【PTA Advanced】1155 Heap Paths(C++)
  • Educational Codeforces Round 129 (Rated for Div. 2)
  • [数据库]表的增删改查
  • 分享77个JS菜单导航,总有一款适合您
  • kubernetes -- 核心组件介绍以及组件的运行流程
  • 微信小程序Springboot短视频分享系统
  • 排序算法学习
  • 常见漏洞之 struts2+ jboss
  • leetcode470 用Rand7()实现Rand10()
  • JSON数据解析商品详情API
  • 服务端开发Java面试复盘篇1
  • Android框架WiFi架构
  • rt-thread 移植调试记录
  • 红外线额温枪与红外线温度传感器的原理分析
  • 2023牛客寒假算法集训营4
  • vue组合式API及生命周期钩子函数
  • Python|每日一练|数组|回溯|二分查找|排序和顺序统计量|.update方法 |单选记录:组合总和|寻找峰值|编程通过键盘输入每一位运动员
  • minio下载文件速度很慢的原因分析与说明
  • 基于comsol软件弯曲单模光纤模拟仿真
  • 如何开启多个独立Chrome浏览器
  • erp5开源制造业erp主要业务会计分录处理
  • 技能树基础——17四平方和(拉格朗日定理,嵌套循环)
  • JPA、EJB、事物管理---相关内容整理
  • C语言学习笔记(一):了解C语言
  • 回头看——《智能家居项目小结》
  • 社交登陆OAuth2.0
  • C++005-C++选择与分支2