docker (十)-docker compose容器编排

在实际工作中,部署一个应用可能需要部署多个容器,一个一个部署非常不方便。docker compose可以一键部署和启动多个容器,它使用yaml文件来编排服务。github和docker hub很多项目都提供了docker-compose.yaml文件,我们可以一键部署项目,非常方便。

这里可以使用vscode去学习docker compose的格式 

一键部署

将以下内容保存到本地的docker-compose.yml文件中。

docker compose命令启动时,默认在当前目录下寻找compose.yaml或compose.yml,为了兼容之前的版本,也会查找docker-compose.yaml或docker-compose.yml。
也可以使用-f参数手动指定文件docker compose -f docker-compose-dev.yml up -d

docker compose up -d一键部署启动
docker compose start/stop启动/停止服务
docker compose down停止并删除容器,不会删除存储卷volume

compose文件结构

docker-compose.yml通常需要包含以下几个顶级元素:

version 已弃用,早期版本需要此元素
services 必要元素,定义一个或多个容器的运行参数

  在services 中可以通过以下元素定义容器的运行参数

主要关注 端口映射、环境变量、挂载数据持久化、容器重启策略

image

                                  容器镜像

ports端口映射
environment环境变量
networks容器使用的网络
volumes容器挂载的存储卷
command容器启动时执行的命令
depends_on定义启动顺序
复数形式,ports、networks、depends_on参数需传入列表

yaml文件语法

  •  缩进代表上下级关系
  •  缩进时不允许使用Tab键,只允许使用空格
  •  : 键值对,后面必须有空格
  •  -列表,后面必须有空格
  •  [ ]数组
  •  #注释
  •  {key:value,k1:v1}map
  •  | 多行文本块
  • --- 表示一个文档的开始
  • 把公共的配置提取出来,用&来建立锚点,<<合并到当前数据,用*引用锚点

编排自己的项目

command 支持以下写法:

#推荐使用数组或列表的方式
#数组
command:["java","-jar","/usr/local/src/ruoyi-admin.jar"]
#列表
command: - java- -jar- /usr/local/src/ruoyi-admin.jar# shell命令模式
command: java -jar /usr/local/src/ruoyi-admin.jar

environment 支持如下两种写法:

# 使用map
environment:MYSQL_DATABASE: exampledbMYSQL_USER: exampleuserMYSQL_PASSWORD: examplepassMYSQL_RANDOM_ROOT_PASSWORD: '1'#使用列表
environment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_DATABASE=ry- LANG=C.UTF-8

容器启动顺序 depends_on

数据库初始化完成之前,不会建立connections。

depends_on 只能保证容器的启动和销毁顺序,不能保证依赖的容器是否ready

要确保应用服务在数据库初始化完成后再启动,需要配合conditionhealthcheck使用。

condition有三种状态:

  1. service_started容器已启动
  2. service_healthy容器处于健康状态
  3. service_completed_successfully容器执行完成且成功退出(退出状态码为0)

重启策略

以下是几种常用的重启策略

  1. no:这是默认值。表示容器停止后不会自动重启。

  2. always:表示容器停止后总是自动重启。

  3. unless-stopped:表示容器停止后除非明确停止(使用 docker-compose stop 或手动停止),否则总是自动重启。

  4. on-failure:表示容器非正常退出(即退出状态非 0)时自动重启。可以通过 restarton-failure 子选项来指定最大的重启次数,例如 restart: on-failure:5 表示容器在失败时最多尝试重启 5 次。

  5. unless-stopped:表示容器停止后除非明确停止(使用 docker-compose stop 或手动停止),否则总是自动重启。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用

摘要&#xff1a;本文分析了木材加工企业的特点、现状及常见电气火灾隐患&#xff0c;提出了消灭电气火灾隐患的措施。结尾介绍了木材加工企业常用电气设备的选用及电气火灾监控系统在其低压配电系统的应用方案及产品选型。 关键词&#xff1a;木材加工企业&#xff1b;电气火…

redis 异步队列

//produceMessage.ts 模拟生产者 import Redis from ioredis; const redis new Redis(); // 生产者&#xff1a;将消息推送到队列 async function produceMessage(queueName:string, message:string) {try {await redis.rpush(queueName, message);console.log(Produced messa…

Unity摄像机跟随

Unity摄像机跟随 方法一&#xff1a;摄像机子物体 将摄像机直接拖拽到被跟随的目标下面即可&#xff0c;这样摄像机永远在目标的后面 缺点&#xff1a; 屏幕旋转太平滑了目标物体在屏幕上的位置永远不变目标物体被销毁时总不能把摄像机也销毁了吧 方法二&#xff1a;子物体…

19个Web前端交互式3D JavaScript框架和库

JavaScript &#xff08;JS&#xff09; 是一种轻量级的解释&#xff08;或即时编译&#xff09;编程语言&#xff0c;是世界上最流行的编程语言。JavaScript 是一种基于原型的多范式、单线程的动态语言&#xff0c;支持面向对象、命令式和声明式&#xff08;例如函数式编程&am…

从零开始手写mmo游戏从框架到爆炸(十六)— 客户端指定回调路由与登录

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 我们这次来把注册、登录、选择英雄&#xff0c;进入主页-选择地图的功能完善。 在这之前&#xff0c;我们还要解决一个问题&#xff0c;就是服务端往客户端发消息的路由问题…

phpcms v9敏感词内容替换

后台先在"扩展"——>"敏感词管理"中添加敏感词&#xff0c;然后修改phpcms\modules\content\content.php文件来实现添加或者编辑内容时敏感词的替换。&#xff08;如果涉及会员投稿和留言等&#xff0c;也需要在对应模块中做类似处理&#xff09; 在ad…

ADO.NET实现读写分离

在 ADO.NET 中&#xff0c;分片和垂直分表的支持并不是直接提供的&#xff0c;而是需要你在应用程序设计和数据库架构中手动实现。下面是如何在 ADO.NET 中支持分片和垂直分表的一些步骤和策略&#xff1a; 分片 (Sharding) 1. 设计分片策略 首先&#xff0c;你需要设计一个…

《基于CEEMDAN-小波包分析的隧道爆破信号去噪方法》论文思路

相比于小波降噪&#xff0c;小波包分析具有更高的频率分辨率&#xff0c;可以进一步消除高频部分存在的噪声余量&#xff0c;提高去噪精度 依据EEMD 分解的取值范围&#xff0c;利用“试错法”得到本次试验中CEEMDAN分解的特征参数为&#xff1a;正负高斯白噪声标准差为0.2&a…

Linux--shell编程中有关while循环的详细内容

文章关于while循环的内容目录 一、while循环 ​​​​​​​​​​​​​​二、无限循环 ​​​​​​​​​​​​​​三、case语句 ​​​​​​​四、跳出循环 ​​​​​​​​​​​​​​五、break ​​​​​​​六、continue​​​​​​​ ​​​​​​​一、w…

Java Web(六)--XML

介绍 官网&#xff1a;XML 教程 为什么需要&#xff1a; 需求 1 : 两个程序间进行数据通信&#xff1f;需求 2 : 给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去读取它应当监听的端口号、还有连接数据库的用户名和密码。spring 中的…

二叉树及其练习题

文章目录 树概念及结构树的概念树的相关概念树的表示形式树的应用 二叉树概念及结构概念两种特殊的二叉树二叉树的性质二叉树的存储二叉树的基本操作二叉树的遍历前中后序遍历递归实现二叉树的基本操作 二叉树相关oj题 树概念及结构 树的概念 树是一种非线性的数据结构&#…

c++:蓝桥杯中的基础算法1(枚举,双指针)

枚举 基础概念&#xff1a; 枚举&#xff08;Enum&#xff09;是一种用户定义的数据类型&#xff0c;用于定义一个有限集合的命名常量。在C中&#xff0c;枚举类型可以通过关键字enum来定义。 下面是一个简单的枚举类型的定义示例&#xff1a; #include <iostream>enum…

【面试题】谈谈MySQL的索引

索引是啥 可以把Mysql的索引看做是一本书的目录&#xff0c;当你需要快速查找某个章节在哪的时候&#xff0c;就可以利用目录&#xff0c;快速的得到某个章节的具体的页码。Mysql的索引就是为了提高查询的速度&#xff0c;但是降低了增删改的操作效率&#xff0c;也提高了空间…

数字经济概念辨析

一些常见的数字经济&#xff0c;数字金融概念辨析 博士学位点-应用经济学、统计学、工商管理、管理科学与工程 可以不懂&#xff0c;但不能装懂&#xff1b;可以不会&#xff0c;但不能不学&#xff1b;可以偷懒&#xff0c;但不能停滞。 增程式和混合动力的电动车都是混合动…

医疗在线问诊小程序:开启数字化医疗新篇章

随着科技的飞速发展&#xff0c;医疗行业正逐步向数字化转型。其中&#xff0c;医疗在线问诊小程序作为一种新型的医疗健康服务模式&#xff0c;为人们提供了更为便捷、高效的医疗咨询服务。本文将探讨医疗在线问诊小程序的发展背景、优势及应用场景&#xff0c;以期为医疗行业…

【JavaScript】模块的导入和导出

文章目录 1. 导出模块1.1 基本导出1.2 默认导出 2. 导入模块2.1 基本导入2.2 导入全部2.3 默认导入 3. 在实际项目中的应用3.1 模块化开发3.2 组织项目结构 4. 模块的导入导出语法比较4.1 命名导出4.2 默认导出 5. 总结 在现代 JavaScript 开发中&#xff0c;模块化编程是一项关…

elementUI 动态校验表单数据的方法

elementUI 动态校验表单数据的方法 直接设置如下 list 为动态获取的数据值列表数据 这里主要设置两块内容 prop为动态数据 rules设置需要校验的值 :prop“list.${index}.title” :rules“rules.title” //title 名称可自己定义 //这里主要设置两块内容 prop为动态数据 rules…

axios介绍和使用

1. Axios是什么 Axios框架全称&#xff08;ajax – I/O – system&#xff09; Axios是一个基于Promise的JavaScript HTTP客户端&#xff0c;用于浏览器和Node.js环境。它可以发送HTTP请求并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换JSON数据等功能。 Axios提…

当服务器磁盘空间报警时怎么处理?

1、df -hT 查看磁盘使用情况 [rootapplication01 ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 44G 8.3G 36G 19% / devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev tmpfs …

服务器防火墙的应用技术有哪些?

随着互联网的发展&#xff0c;网络安全问题更加严峻。服务器防火墙技术作为一种基础的网络安全技术&#xff0c;对于保障我们的网络安全至关重要。本文将介绍服务器防火墙的概念和作用&#xff0c;以及主要的服务器防火墙技术&#xff0c;包括数据包过滤、状态检测、代理服务、…