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

升级Ubuntu后Docker Compose报错:不允许额外属性name

Docker Compose配置修正与nginx-proxy适用性确认

一、配置修正方案

1. 核心错误修复(mysql-yo2c服务)

报错services.mysql-yo2c.volumes.0 Additional property name is not allowed源于volume类型挂载的语法错误:当type: volume时,不能同时指定name和source(source是bind挂载的专属参数,volume类型仅需引用已定义的命名卷)。根据你挂载本地目录到容器的需求,提供两种修正方式:

方式一:改为bind挂载(直接映射本地目录)

将mysql-yo2c的volumes配置修改为:

volumes:
  - type: bind
    source: /home/ubuntu/docker/data_yo2c
    target: /var/lib/mysql
  - /home/ubuntu/docker/configs/scripts/config:/bin/config 

(移除多余的name字段,bind挂载无需通过name标识)

方式二:用命名卷绑定本地目录(规范Docker卷管理)

若想用Docker命名卷管理本地目录,需在compose文件末尾添加卷定义,并修改mysql-yo2c的挂载配置:

首先在文件末尾追加:

volumes:
  db_yo2c:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /home/ubuntu/docker/data_yo2c

然后修改mysql-yo2c的volumes:

volumes:
  - type: volume
    source: db_yo2c
    target: /var/lib/mysql
  - /home/ubuntu/docker/configs/scripts/config:/bin/config 

2. 其他潜在问题检查

  • nginx-proxy的bind挂载带name:配置中type: bind同时指定name: common是合法的,用于多容器共享挂载定义,无需修改。
  • Portainer镜像版本:portainer/portainer为旧版镜像,建议替换为portainer/portainer-ce(社区版),但旧版仍可正常运行,不影响compose执行。
  • links字段:yo2c-com服务中的links在Docker Compose v3+中已被网络自动发现替代,可删除,保留也不会报错。

二、nginx-proxy适用性说明

  • 当前用法完全有效:你通过jwilder/nginx-proxy镜像配合VIRTUAL_HOST环境变量实现反向代理的方式,仍是该工具的标准用法,在Docker Compose v2(即docker compose命令)下完全兼容。
  • 镜像更新建议:原jwilder/nginx-proxy已迁移至nginx-proxy/nginx-proxy组织,后续更新会发布在新地址,建议更换镜像地址以获取最新维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:29