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

docker-compose定义应用通信外部网络时因YAML缩进错误报network需为映射而非数组的问题咨询

报错根因

Docker Compose 规范要求顶层networks字段的类型为键值映射(Mapping),不支持数组结构。当前配置中networks下使用了列表项标识-,被解析器判定为数组类型,直接触发「network must be a mapping, not an array」的类型校验报错。

错误代码定位

问题出在配置末尾的networks定义段,错误写法如下:

networks:
   - zmq_network:
     external: true

开头的-是YAML数组列表的标识,导致整个networks字段结构不符合要求。

修正步骤
  1. 移除networks下的-标识,将zmq_network作为键直接挂载配置项
  2. 自定义网络定义完成后,需要在关联该网络的服务配置中显式声明,否则容器默认会连接Compose自动生成的默认网络,无法实现预期的跨容器通信

修正后的完整可运行配置:

version: '3'

services:
  zmq_sub:
    image: zmq_sub
    networks:
      - zmq_network
  zmq_pub:
    image: zmq_pub
    depends_on:
      - zmq_sub
    networks:
      - zmq_network

networks:
  zmq_network:
    external: true
注意事项
  • YAML语法对缩进敏感,所有缩进必须使用空格,禁止使用Tab字符,同层级配置项的缩进长度需完全一致
  • 配置中external: true表示该网络为预先在Docker宿主机创建的外部网络,Compose不会自动创建,需提前执行docker network create zmq_network完成网络初始化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 19:36:04