在AWS EC2实例中使用docker-compose时extends与depends_on冲突报错如何解决?
问题原因及解决方法
核心原因
这个报错是Docker Compose版本兼容性问题:
- Docker Desktop自带的Docker Compose版本通常较新,已经移除了
extends与depends_on不能同时在服务中使用的限制; - 你在AWS EC2上安装的Docker Compose版本偏旧,旧版本的Compose不允许在使用
extends的服务中声明depends_on,针对ingress这类特殊服务时,该限制表现更严格。
解决方法
方法1:升级EC2上的Docker Compose到最新兼容版本
- 检查当前版本:
docker-compose --version - 卸载旧版本(以Debian/Ubuntu系统为例):
sudo apt-get remove docker-compose - 安装最新稳定版:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose - 验证安装:
docker-compose --version
升级完成后重新运行你的yaml文件即可。
方法2:修改docker-compose.yaml文件(无需升级)
如果暂时无法升级Compose版本,可以调整配置文件:
- 移除
ingress服务中的extends关键字,直接将被继承服务的所有配置内容复制到ingress服务下; - 保留
depends_on配置在ingress服务中,确保依赖关系正常。
示例调整前:
services: ingress: extends: file: common.yaml service: base-ingress depends_on: - backend
调整后:
services: ingress: # 直接复制base-ingress的所有配置,示例如下: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - backend
内容的提问来源于stack exchange,提问作者naruto1922
相关产品推荐
相关产品推荐

