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: exampledb
    MYSQL_USER: exampleuser
    MYSQL_PASSWORD: examplepass
    MYSQL_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 或手动停止),否则总是自动重启。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值