You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux虚拟机docker-compose-deploy.yml适配低版本配置问题

适配Docker Compose v1.25.0的docker-compose-deploy.yml修改方案

你遇到的问题都是因为Docker Compose v1.25.0属于较老的Compose V1分支,很多新特性尚未支持,对应报错的具体修改方案如下:

1. 移除profiles配置字段

profiles是在Docker Compose v1.28.0才引入的特性,v1.25.0完全不兼容该字段。

  • 原配置示例:
services:
  nginx:
    profiles: ["prod"]
    ...
  • 修改后:直接删除profiles: ["prod"]这一行
  • 替代方案:如果需要仅启动特定服务,通过命令行指定服务名即可,比如执行docker-compose up nginx letsencrypt,无需依赖profiles做过滤。

2. 删除healthcheck中的start_period属性

v1.25.0的healthcheck不支持start_period参数,该参数是后续版本新增的。

  • 原配置示例:
healthcheck:
  test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
  interval: 10s
  timeout: 5s
  retries: 3
  start_period: 30s
  • 修改后:去掉start_period: 30s,如果需要给服务留启动缓冲时间,可以调大retries的值模拟,比如把retries改为6,这样总共有60s的检测窗口(10s×6):
healthcheck:
  test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
  interval: 10s
  timeout: 5s
  retries: 6

3. 简化depends_on的格式

v1.25.0的depends_on仅支持简单的服务名数组,不支持带健康检查条件的复杂格式(比如condition: service_healthy)。

  • 原配置示例:
services:
  letsencrypt:
    depends_on:
      nginx:
        condition: service_healthy
    ...
  • 修改后:改成纯数组格式:
services:
  letsencrypt:
    depends_on: [nginx]
    ...
  • 替代方案:如果需要确保依赖服务完全就绪后再启动当前服务,可以在服务的启动命令中加入延迟逻辑,或者在cli.sh脚本里添加等待逻辑,比如用wait-for-it工具(需在容器预装或作为脚本引入),示例命令:
command: ["sh", "-c", "wait-for-it nginx:80 -t 60 && 你的启动命令"]

完成以上三处修改后,你的docker-compose-deploy.yml即可在Docker Compose v1.25.0版本下正常运行。

内容的提问来源于stack exchange,提问作者custardbun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:25:05