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 小时前
Ubuntu Samba修改端口绕过445封禁挂载
运维·ubuntu
GreenTea3 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt3 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet3 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea3 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
wdfk_prog3 小时前
ROS教程:01 搭建 ROS1 Noetic Docker 开发环境
运维·缓存·docker·容器·ros
SEO_juper3 小时前
Java 并发编程实战:从线程基础到高并发架构
运维·人工智能·爬虫·chatgpt·seo
szephyr4 小时前
Docker + Compose 实战:把本地项目一键搬到云服务器,附完整配置
运维·docker·容器·部署·云服务器
wdfk_prog4 小时前
ros教程02:创建 catkin Workspace、Package 与第一个 ROS1 C++ Node
运维·缓存·docker·容器·ros