docker compose V2版本新属性

前言

Docker Compose V2 是目前 Docker 生态中默认且推荐的编排工具版本。它不再是独立的 Python 程序,而是作为 Docker CLI 的原生插件(Go 语言编写)直接集成在 Docker 命令体系中

docker compose V2版本新属性

语法

V2 将 docker-compose(带连字符)替换为 docker compose(空格分隔的子命令)

复制代码
docker compose up -d

查询版本

安装完docker compose版本之后,可以执行以下命令查看版本

复制代码
docker compose version

version字段去掉

yaml 复制代码
version: '3.0'
services:
 mysql:
   image: mysql:9.4.0
   container_name: mysql9
   ports:
     - "3:3306"
   volumes:
     - /home/my.cnf:/etc/my.cnf
     - ./data:/var/lib/mysql
     - ./logs:/var/log/mysql
   environment:
     MYSQL_ROOT_PASSWORD: 123456
   restart: unless-stopped
   privileged: true

V2版本可以省去version这个字段,存在的话,会输出警告

include 指令

模块化拆分多个 compose 文件(替代旧的 -f 多文件合并)

yaml 复制代码
include:
  - path: ./services/db.yml
  - path: ./services/cache.yml

depends_on

depends_on 是 Docker Compose 中用于定义服务依赖关系的核心指令,它控制的是服务的启动和关闭顺序,而非服务之间的网络连通性

yaml 复制代码
services:
  web:
    depends_on:
      - db
      - redis

语法可以使用

yaml 复制代码
# docker-compose.yml
include:
  - path: /home/docker-compose1.yml
    env_file: /home/.env

services:
  app:
    depends_on:
      database:
        condition: saas-lock

然后执行

复制代码
docker compose up -d

启动容器

docker compose watch

这是 V2 对开发者最友好的特性。它允许你定义文件变更时的自动同步策略,无需反复执行 up --build。

服务依赖条件增强 (condition)

V2 原生支持基于健康检查的启动顺序控制,不再需要 wait-for-it.sh 等外部脚本:

yaml 复制代码
1services:
2  mysql9:
3    healthcheck:
4      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
5      interval: 5s
6      retries: 10
7
8  app:
9    depends_on:
10      mysql9:
11        condition: service_healthy     # ✅ 等待健康检查通过
12        required: true                 # ✅ 必需服务,失败则 app 不启动
13      redis:
14        condition: service_started     # 仅等待启动,不等健康
15        required: false                # ✅ 可选服务,redis 挂了 app 仍能启动
condition 含义
service_started 容器已启动(默认行为)
service_healthy 健康检查通过
service_completed_successfully 一次性任务成功退出(适用于 init 容器)

总结

docker compose V2版本在体验上比v1版本更可以

相关推荐
现任明教教主~2 小时前
SpringBoot+Vue学生宿舍管理系统源码 带部署文档
vue.js·spring boot·后端
码事漫谈8 小时前
骂AI,会让它做得更好吗?
后端
陈随易9 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
东莞市云毅网络有限公司10 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
架构技术专栏10 小时前
AI Agent 框架怎么选:从一次制度查询拆出技术边界
后端·面试
XiaoMaqqqq10 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
huainingning11 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘11 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项11 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
Lsetea12 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链