DockerCompose容器编排技能Skill docker-compose

该技能用于管理Docker Compose容器编排,支持多容器应用的开发、测试和部署,关键词包括Docker Compose, 容器编排, 微服务, 云原生, DevOps, 容器化应用, 服务管理, 日志监控。

Docker/K8s 0 次安装 0 次浏览 更新于 3/10/2026

名称: docker-compose 描述: Docker Compose 容器编排和管理。管理多容器应用、服务、网络和卷。用于本地开发、测试和容器化应用的编排。 版本: 1.1 模型: sonnet 调用者: 两者 用户可调用: true 工具: [Bash, Read, Glob] 最佳实践:

  • 优先使用 compose.yaml(规范 V2 名称)而非 docker-compose.yml
  • 使用 docker compose(V2 插件),绝不使用 docker-compose(V1 二进制文件)
  • 在操作前验证 compose.yaml 存在
  • 使用项目名称进行隔离
  • 在执行破坏性操作前检查服务状态
  • 避免未经确认的卷移除
  • 在重启失败服务前查看日志
  • 在所有有状态服务上定义健康检查
  • 使用配置文件处理环境特定服务
  • 使用 watch + develop 块进行实时开发重载 错误处理: 优雅 流式传输: 支持 安全级别: 高 已验证: true 最后验证时间: 2026-02-19T06:00:00.000Z

Docker Compose 技能

安装

该技能调用 docker compose。最简单方法:安装 Docker Desktop(包含 Docker Engine + Compose):

验证:docker compose version

速查表与最佳实践

命令: docker compose up -d / downdocker compose ps / logs -f <服务>docker compose exec <服务> shdocker compose build --no-cachedocker compose -f compose.prod.yaml config — 验证。

YAML: 为数据库使用命名卷(postgres_data:/var/lib/postgresql/data)。使用健康检查(healthcheck: 包含 testintervaltimeoutretries)。一个默认网络;通过名称引用服务(例如 http://api:3000)。使用 env_fileenvironment;将秘密保存在 secrets: 中。

技巧: -f compose.yaml -f override.yaml 合并文件(后者覆盖)。使用 --project-name 进行隔离。开发时优先使用 build: context: . dockerfile: Dockerfile;生产环境中固定镜像标签。在 up 前运行 docker compose config 以捕获错误。

认证与培训

Docker 认证助理(DCA): 编排 25%,镜像/注册表 20%,安装/配置 15%,网络 15%,安全 15%,存储 10%。免费资源:官方 DCA 学习指南Coursera DCA 准备课程(可审核)。技能数据: Compose YAML(服务、卷、网络、健康检查),CLI(up/down/ps/logs/exec)。

钩子与工作流

建议钩子: 启动前:docker compose config(验证)。停止后:可选清理。当路由到 devopsdevops-troubleshooter 时使用。

工作流:devops(主要)、devops-troubleshooter(主要)一起使用。流程:验证 compose → 根据任务执行 up/down/exec。参见 operations/incident-response 进行容器调试。

概述

该技能提供全面的 Docker Compose 管理,使 AI 代理能够编排多容器应用、管理服务、检查日志和故障排除容器化环境,通过渐进式披露实现最佳上下文使用。

上下文节省: 约 92% 减少

  • MCP 模式: 约 25,000 令牌始终加载(多个工具 + 模式)
  • 技能模式: 约 700 令牌元数据 + 按需加载

何时使用

  • 管理本地开发环境
  • 编排多容器应用
  • 调试服务连接性和网络
  • 监控容器日志和健康状态
  • 构建和更新服务镜像
  • 测试容器化应用堆栈
  • 故障排除服务失败
  • 管理应用生命周期(启动、停止、重启)

要求

  • Docker Engine 已安装并运行
  • Docker Compose V2(docker compose 插件 — V1 docker-compose 已终止支持)
  • 项目中有效的 compose.yaml(首选)或 compose.yml / docker-compose.yml
  • Docker 套接字访问的适当权限

快速参考

# 列出运行中的服务
docker compose ps

# 查看服务日志
docker compose logs <服务>

# 启动服务
docker compose up -d

# 停止服务
docker compose down

# 重建服务
docker compose build

# 在容器中执行命令
docker compose exec <服务> <命令>

# 实时开发重载(Compose Watch)
docker compose watch

# 使用配置文件启动
docker compose --profile debug up -d

# 验证合并配置
docker compose config

2026 年功能亮点

compose.yaml — 规范文件名

Docker Compose V2 优先使用 compose.yaml(和 compose.yml)而非旧的 docker-compose.yml。顶级字段 version: 已弃用,新文件中应完全省略。

# compose.yaml(首选 — 不需要 version: 字段)
services:
  web:
    build: .
    ports:
      - '8080:80'
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Compose Watch — 实时开发重载

Compose Watch(自 Compose 2.22+ 起正式发布)取代了开发期间的手动重建-重启循环。为每个服务配置 develop.watch 块。提供三种操作:

操作 行为
sync 即时将更改文件复制到运行中的容器
rebuild 触发 docker compose build + 重新创建容器
sync+restart 同步文件然后重启容器进程(无需完全重建)
services:
  api:
    build: .
    ports:
      - '3000:3000'
    develop:
      watch:
        # 即时同步源 — 无需为解释型代码重建
        - action: sync
          path: ./src
          target: /app/src
          ignore:
            - node_modules/
        # 当依赖清单更改时重建
        - action: rebuild
          path: package.json
        # 仅当配置更改时重启
        - action: sync+restart
          path: ./config
          target: /app/config

启动方式:

# 观察模式(输出保持在前台)
docker compose watch

# 或与 up 结合
docker compose up --watch

每种操作的使用时机:

  • sync — 解释型语言(Node.js、Python、Ruby),运行时能获取更改
  • sync+restart — 配置或模板文件,需要进程重启但无需完全重建
  • rebuild — 依赖清单更改(package.jsonrequirements.txtgo.mod

配置文件 — 环境特定服务

配置文件允许单个 compose.yaml 服务多个环境。没有配置文件的服务始终启动。有配置文件的服务仅当激活该配置文件时启动。

services:
  # 始终启动 — 无配置文件
  api:
    build: .
    ports:
      - '3000:3000'
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16-alpine
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 5s
      timeout: 3s
      retries: 5
    volumes:
      - db_data:/var/lib/postgresql/data

  # 仅使用 --profile debug
  pgadmin:
    image: dpage/pgadmin4:latest
    profiles: ['debug']
    ports:
      - '5050:80'
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: admin

  # 仅使用 --profile monitoring
  prometheus:
    image: prom/prometheus:latest
    profiles: ['monitoring']
    ports:
      - '9090:9090'

  grafana:
    image: grafana/grafana:latest
    profiles: ['monitoring']
    ports:
      - '3001:3000'

volumes:
  db_data:
# 默认:仅 api + db
docker compose up -d

# 调试:api + db + pgadmin
docker compose --profile debug up -d

# 监控:api + db + prometheus + grafana
docker compose --profile monitoring up -d

# 多个配置文件
docker compose --profile debug --profile monitoring up -d

# 通过环境变量
COMPOSE_PROFILES=debug,monitoring docker compose up -d

配置文件命名规则: [a-zA-Z0-9][a-zA-Z0-9_.-]+ — 推荐使用小写短横线命名法。

包含 — 可组合配置

顶级键 include(在 Compose 2.20 中引入)允许将大型 compose 文件拆分为模块化、团队所有的部分。每个包含的文件使用其自己的项目目录上下文加载,正确解析相对路径。

# compose.yaml(根 — 应用层)
include:
  - ./infra/compose.yaml # DB, Redis, 消息代理
  - ./monitoring/compose.yaml # Prometheus, Grafana

services:
  api:
    build: .
    depends_on:
      - db # 在 infra/compose.yaml 中定义
      - redis # 在 infra/compose.yaml 中定义
# infra/compose.yaml(基础设施层 — 平台团队所有)
services:
  db:
    image: postgres:16-alpine
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 5s
      timeout: 3s
      retries: 5
    volumes:
      - db_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    healthcheck:
      test: ['CMD', 'redis-cli', 'ping']
      interval: 5s
      timeout: 3s
      retries: 5

volumes:
  db_data:

include 是递归的 — 包含的文件本身可以包含其他文件。资源名称冲突会导致错误(无静默合并)。

健康检查最佳实践

始终在有状态服务上定义健康检查,以便 depends_on: condition: service_healthy 正确工作。没有健康检查,依赖服务可能在依赖项准备就绪前启动。

services:
  db:
    image: postgres:16-alpine
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-postgres}']
      interval: 10s # 检查频率
      timeout: 5s # 等待响应时间
      retries: 5 # 标记为不健康前的失败次数
      start_period: 30s # 容器启动期间的宽限期

  redis:
    image: redis:7-alpine
    healthcheck:
      test: ['CMD', 'redis-cli', 'ping']
      interval: 10s
      timeout: 3s
      retries: 3

  api:
    build: .
    depends_on:
      db:
        condition: service_healthy # 等待直到 db 通过健康检查
      redis:
        condition: service_healthy

健康检查指南:

  • 尽可能使用 CMD(数组形式)而非 CMD-SHELL(字符串形式) — 避免 shell 注入风险
  • 仅当需要 shell 功能时使用 CMD-SHELLpg_isreadycurl -f 等)
  • 为启动慢的服务设置 start_period(JVM 应用、首次运行迁移)
  • 除非明确安装,避免在 Alpine 基础镜像中使用 curl;优先使用 wget -q --spider 或本机检查
  • 对于 HTTP 服务:test: ["CMD-SHELL", "wget -q --spider http://localhost:3000/health || exit 1"]

多阶段构建模式

使用多阶段 Dockerfiles 保持生产镜像最小化和安全。在 compose.yaml 中引用特定构建阶段以进行开发。

# Dockerfile
# 阶段 1: deps — 安装依赖
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci

# 阶段 2: builder — 编译/转译
FROM deps AS builder
COPY . .
RUN npm run build

# 阶段 3: runner — 最小生产镜像
FROM node:20-alpine AS runner
RUN addgroup -g 1001 -S appgroup && adduser -S -u 1001 -G appgroup appuser
WORKDIR /app
COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=deps    --chown=appuser:appgroup /app/node_modules ./node_modules
USER appuser
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
  CMD wget -q --spider http://localhost:3000/health || exit 1
CMD ["node", "dist/index.js"]
# compose.yaml — 开发目标为 builder 阶段以加快迭代
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
      target: builder # 开发时停止在 builder 阶段(包括 devDeps)
    develop:
      watch:
        - action: sync
          path: ./src
          target: /app/src
          ignore:
            - node_modules/
        - action: rebuild
          path: package.json
# compose.prod.yaml — 生产使用完整 runner 阶段
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
      target: runner # 最小化、非 root 生产镜像
    restart: unless-stopped

资源限制(最佳实践)

始终定义资源限制以防止容器资源耗尽:

services:
  api:
    image: myapp:latest
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 128M
    restart: unless-stopped

工具

该技能提供 15 个工具,涵盖服务管理、监控、构建操作和故障排除类别:

服务管理(5 个工具)

up

启动 compose.yaml 中定义的服务。

参数 类型 描述 默认值
detached boolean 以分离模式运行 true
build boolean 启动前构建镜像 false
force_recreate boolean 重新创建容器 false
project_name string 项目名称覆盖 目录名称
services array 要启动的特定服务 所有服务
profiles array 要激活的配置文件
watch boolean 启用 Compose Watch 模式 false

示例:

docker compose up -d
docker compose up --build
docker compose up web api
docker compose --profile debug up -d
docker compose up --watch

安全: 生产环境需要确认。

down

停止并移除容器、网络、卷。

参数 类型 描述 默认值
volumes boolean 移除卷(已阻止) false
remove_orphans boolean 移除孤立容器 false
project_name string 项目名称覆盖 目录名称

示例:

docker compose down
docker compose down --remove-orphans

安全: 卷移除(-v 标志)默认已阻止。需要确认。

start

启动现有容器而不重新创建它们。

参数 类型 描述 默认值
services array 要启动的特定服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose start
docker compose start web

stop

停止运行中的容器而不移除它们。

参数 类型 描述 默认值
timeout number 关闭超时(秒) 10
services array 要停止的特定服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose stop
docker compose stop --timeout 30 web

restart

重启服务(停止 + 启动)。

参数 类型 描述 默认值
timeout number 关闭超时(秒) 10
services array 要重启的特定服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose restart
docker compose restart api

状态与日志(3 个工具)

ps

列出容器及其状态信息。

参数 类型 描述 默认值
all boolean 显示所有容器(包括已停止的) false
services array 按服务过滤 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose ps
docker compose ps --all

输出字段: NAME, IMAGE, STATUS, PORTS

logs

查看服务日志,支持流式传输。

参数 类型 描述 默认值
services array 要查看日志的服务 所有服务
follow boolean 跟随日志输出(流式) false
tail number 显示的行数 100
timestamps boolean 显示时间戳 false
since string 显示自时间戳/持续时间后的日志
project_name string 项目名称覆盖 目录名称

示例:

docker compose logs web
docker compose logs --tail 50 --follow api
docker compose logs --since "2026-01-01T10:00:00"

注意: 跟随模式在 60 秒后自动终止以防止无限流式传输。

top

显示容器中运行的进程。

参数 类型 描述 默认值
services array 要检查的服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose top
docker compose top web

输出: 进程列表,包括 PID, USER, TIME, COMMAND

构建与镜像(3 个工具)

build

构建或重建服务镜像。

参数 类型 描述 默认值
no_cache boolean 无缓存构建 false
pull boolean 拉取新镜像版本 false
parallel boolean 并行构建 true
services array 要构建的服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose build
docker compose build --no-cache web
docker compose build --pull

安全: 无缓存构建需要确认(资源密集)。

pull

从注册表拉取服务镜像。

参数 类型 描述 默认值
ignore_pull_failures boolean 拉取失败时继续 false
services array 要拉取的服务 所有服务
project_name string 项目名称覆盖 目录名称

示例:

docker compose pull
docker compose pull web api

安全: 生产环境需要确认。

images

列出服务使用的镜像。

参数 类型 描述 默认值
project_name string 项目名称覆盖 目录名称

示例:

docker compose images

输出字段: CONTAINER, REPOSITORY, TAG, IMAGE ID, SIZE

执行(2 个工具)

exec

在运行中的容器中执行命令。

参数 类型 描述 必需
service string 服务名称
command array 要执行的命令
user string 执行用户 容器默认
workdir string 工作目录 容器默认
env object 环境变量
project_name string 项目名称覆盖 目录名称

示例:

docker compose exec web bash
docker compose exec -u root api ls -la /app
docker compose exec db psql -U postgres

安全:

  • 破坏性命令(rm -rfddmkfssudo rm已阻止
  • 以 root 用户执行需要确认
  • 默认超时:30 秒

run

在新容器中运行一次性命令。

参数 类型 描述 默认值
service string 要运行的服务 必需
command array 要执行的命令 服务默认
rm boolean 运行后移除容器 true
no_deps boolean 不启动链接的服务 false
user string 执行用户 容器默认
env object 环境变量
project_name string 项目名称覆盖 目录名称

示例:

docker compose run --rm web npm test
docker compose run --no-deps api python manage.py migrate

安全: 修改数据的命令需要确认。

配置(2 个工具)

config

验证和查看 Compose 文件配置。

参数 类型 描述 默认值
resolve_image_digests boolean 将镜像标签固定为摘要 false
no_interpolate boolean 不插值环境变量 false
project_name string 项目名称覆盖 目录名称

示例:

docker compose config
docker compose config --resolve-image-digests

输出: 解析和合并的 Compose 配置

port

打印服务端口的公共端口绑定。

参数 类型 描述 必需
service string 服务名称
private_port number 容器端口
protocol string 协议(tcp/udp) tcp
project_name string 项目名称覆盖 目录名称

示例:

docker compose port web 80
docker compose port db 5432

输出: <主机>:<端口> 绑定

常见工作流

启动开发环境

# 1. 验证配置
docker compose config

# 2. 拉取最新镜像
docker compose pull

# 3. 构建自定义镜像
docker compose build

# 4. 以分离模式启动服务
docker compose up -d

# 5. 检查服务状态
docker compose ps

# 6. 查看日志
docker compose logs --tail 100

使用 Compose Watch 进行实时开发

# 1. 确保 compose.yaml 中配置了 develop.watch 块

# 2. 以观察模式启动(前台,显示同步事件)
docker compose watch

# 3. 或以分离模式启动然后观察
docker compose up -d
docker compose watch --no-up

故障排除失败服务

# 1. 检查容器状态
docker compose ps --all

# 2. 查看服务日志
docker compose logs --tail 200 失败服务

# 3. 检查运行中的进程
docker compose top 失败服务

# 4. 检查配置
docker compose config

# 5. 重启服务
docker compose restart 失败服务

# 6. 如果需要,重新创建容器
docker compose up -d --force-recreate 失败服务

更新服务镜像

# 1. 拉取最新镜像
docker compose pull

# 2. 停止服务
docker compose down

# 3. 如果使用自定义 Dockerfiles,重建
docker compose build --pull

# 4. 使用新镜像启动
docker compose up -d

# 5. 验证服务
docker compose ps

调试服务连接性

# 1. 检查运行中的服务
docker compose ps

# 2. 检查端口映射
docker compose port web 80
docker compose port api 3000

# 3. 进入容器
docker compose exec web sh

# 4. 测试连接性(从容器内部)
docker compose exec web curl api:3000/health

# 5. 检查错误日志
docker compose logs web api

清理环境

# 1. 停止所有服务
docker compose down

# 2. 移除孤立容器
docker compose down --remove-orphans

# 3. 查看镜像
docker compose images

# 4. 清理(手动 - 卷移除已阻止)
# 卷需要明确确认后手动清理

使用配置文件处理环境特定服务

# 开发:仅默认服务
docker compose up -d

# 开发 + 调试工具
docker compose --profile debug up -d

# 启动监控堆栈
docker compose --profile monitoring up -d

# 通过环境变量(CI 中有用)
COMPOSE_PROFILES=monitoring docker compose up -d

# 停止和清理特定配置文件
docker compose --profile debug down

配置

环境变量

变量 描述 默认值
COMPOSE_PROJECT_NAME 默认项目名称 目录名称
COMPOSE_FILE Compose 文件路径 compose.yaml
COMPOSE_PROFILES 逗号分隔的激活配置文件 (无)
COMPOSE_PATH_SEPARATOR 多文件路径分隔符 :(Linux/Mac),;(Windows)
DOCKER_HOST Docker 守护进程套接字 unix:///var/run/docker.sock
COMPOSE_HTTP_TIMEOUT API 调用的 HTTP 超时 60
COMPOSE_PARALLEL_LIMIT 最大并行操作 无限制

设置

  1. 安装 Docker Engine:

    # macOS
    brew install --cask docker
    
    # Linux (Ubuntu/Debian)
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    # Windows
    # 从 docker.com 下载 Docker Desktop
    
  2. 验证 Docker Compose:

    # 检查 Docker 版本
    docker --version
    
    # 检查 Compose 版本(必须是 V2,例如 2.24+)
    docker compose version
    
  3. 创建 compose.yaml(无 version: 字段 — V2 不需要):

    services:
      web:
        build: .
        ports:
          - '8080:80'
        depends_on:
          db:
            condition: service_healthy
      db:
        image: postgres:16-alpine
        environment:
          POSTGRES_PASSWORD: example
        healthcheck:
          test: ['CMD-SHELL', 'pg_isready -U postgres']
          interval: 10s
          timeout: 5s
          retries: 5
    
  4. 测试技能:

    docker compose config
    docker compose ps
    

安全功能

阻止的操作

默认阻止以下操作以防止意外数据丢失:

  • 卷移除: docker compose down -v(已阻止 - 需要手动确认)
  • 完全清理: docker compose down -v --rmi all(已阻止 - 极具破坏性)
  • 破坏性执行: rm -rfddmkfssudo rm 容器内部(已阻止)
  • 强制移除: docker compose rm -f(已阻止 - 使用 stop 然后 rm)

需要确认

这些操作需要明确确认:

  • 使用 --no-cache 构建(资源密集)
  • 生产环境中拉取镜像
  • 使用 --force-recreate 启动服务
  • 以 root 用户执行命令
  • 运行修改数据库的命令
  • 以非常短超时停止服务

自动终止操作

以下操作自动终止以防止资源问题:

  • 日志跟随(--follow):60 秒超时
  • 服务执行(exec):30 秒超时
  • 一次性命令(run):60 秒超时

错误处理

常见错误:

错误 原因 修复
docker: command not found Docker 未安装 安装 Docker Engine
Cannot connect to Docker daemon Docker 未运行 启动 Docker 服务
network ... not found 网络清理问题 运行 docker compose down 然后 up
port is already allocated 端口冲突 更改端口映射或停止冲突服务
no configuration file provided 缺少 compose 文件 创建 compose.yaml
service ... must be built 镜像未构建 运行 docker compose build
service unhealthy 健康检查失败 检查 docker compose logs <服务>
include path not found 缺少包含文件 验证 include: 块中的路径

恢复:

  • 验证配置:docker compose config
  • 检查 Docker 状态:docker info
  • 查看服务日志:docker compose logs
  • 强制重新创建:docker compose up -d --force-recreate
  • 干净重启:docker compose down && docker compose up -d

与代理集成

该技能与以下代理集成:

主要代理

  • devops:本地开发、CI/CD 集成、容器编排
  • developer:应用开发、测试、调试

次要代理

  • qa:集成测试、测试环境设置
  • incident-responder:调试生产问题、服务恢复
  • cloud-integrator:云部署、迁移到 Kubernetes
  • performance-engineer:性能测试、资源优化

渐进式披露

该技能使用渐进式披露以最小化上下文使用:

  1. 初始加载: 仅元数据和工具名称(约 700 令牌)
  2. 工具调用: 按需加载特定工具模式(约 100-150 令牌)
  3. 结果流式传输: 大输出(日志)增量流式传输
  4. 上下文清理: 使用后清除旧结果

上下文优化:

  • 使用 --tail 限制日志输出
  • 使用服务过滤器以针对特定容器
  • 优先使用 ps 而非 ps --all 仅用于活动服务
  • 使用 --since 进行时间限定日志查询

故障排除

技能问题

Docker Compose 未找到:

# 检查 Docker Compose 版本
docker compose version

# V1(docker-compose)已终止支持 — 升级到 V2
# Docker Compose V2 作为插件集成到 Docker CLI 中

权限被拒绝:

# 将用户添加到 docker 组(Linux)
sudo usermod -aG docker $USER
newgrp docker

# 验证权限
docker ps

Compose 文件问题:

# 验证语法
docker compose config

# 检查错误(安静模式 — 仅退出代码)
docker compose config -q

# 查看解析的配置
docker compose config --resolve-image-digests

网络问题:

# 列出网络
docker network ls

# 移除未使用的网络
docker network prune

# 重新创建服务
docker compose down
docker compose up -d

健康检查失败:

# 检查健康检查状态
docker inspect <容器_id> | grep -A 10 Health

# 查看健康检查输出
docker compose logs <服务>

# 手动运行健康检查命令
docker compose exec <服务> pg_isready -U postgres

Compose Watch 未同步:

# 验证 compose.yaml 中是否存在 develop.watch 块
docker compose config | grep -A 20 develop

# 确保 Compose 版本为 2.22+
docker compose version

# Watch 需要 build: 属性(不仅是 image:)

性能考虑

  • 构建缓存: 使用层缓存以加快构建;除非必要,避免 --no-cache
  • 多阶段构建: 显著减少生产镜像大小(通常 80%+)
  • 并行操作: Docker Compose V2 默认并行化;使用 COMPOSE_PARALLEL_LIMIT 控制
  • 资源限制: 在 compose 文件中定义 CPU/内存限制以防止资源耗尽
  • 日志轮换: 使用日志驱动程序以防止磁盘空间问题
  • 卷清理: 定期清理未使用的卷(需要手动确认)
  • Compose Watch 与绑定挂载: 优先使用 develop.watch 进行跨平台开发;绑定挂载在 macOS/Windows 上有 I/O 性能问题

相关

来源

相关技能

内存协议(强制)

开始前: 读取 .claude/context/memory/learnings.md

完成后:

  • 新模式 -> .claude/context/memory/learnings.md
  • 发现问题 -> .claude/context/memory/issues.md
  • 做出决定 -> .claude/context/memory/decisions.md

假设中断:如果不在内存中,则未发生。