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

docker-compose执行up命令报错:services.volumes必须为映射类型

Docker Compose报错「services. volumes must be a mapping」修复方案

错误原因分析

  • 缩进错误:kafka服务的volumes和environment配置未缩进在kafka节点内,被误识别为services的直接子项,而services下仅允许定义服务名称与对应配置的映射,不能直接放置数组类型的volumes。
  • 环境变量语法错误:KAFKA_ZOOKEEPER_CONNECT=zookeeper: 2181使用了等号,Docker Compose环境变量需用冒号分隔键值对,且冒号后不能加空格。
  • 卷映射格式错误:./data/kafka: /var/run/docker.sock中冒号后存在空格,会导致卷路径解析失败,需删除空格。

修正后的完整配置

version: '3.9'
services:
  zookeeper:
    container_name: zookeeper
    image: wurstmeister/zookeeper
    ports:
      - '2181:2181'
  kafka:
    container_name: kafka
    image: wurstmeister/kafka
    ports:
      - '9092:9092'
    volumes:
      - ./data/kafka:/var/run/docker.sock
    environment: 
      KAFKA_ADVERTISED_HOST_NAME: kafka 
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  mongo:
    container_name: mongo
    image: mongo
    ports:
      - '27017:27017'
    volumes:
      - './data/mongo:/data/db'
  app1:
    container_name: app1
    build: ./app1
    ports:
      - '8080:8080'
    volumes:
      - ./app1:/app
    environment:
      PORT: 8080
      MONGO_URL: 'mongodb://mongo:27017/app1'
      KAFKA_BOOTSTRAP_SERVERS: 'kafka:9092'
      KAFKA_TOPIC: topic1
    depends_on:
      - mongo
      - kafka
  app2:
    container_name: app2
    build: ./app2
    ports:
      - '8081:8080'
    volumes:
      - ./app2:/app
    environment:
      PORT: 8081
      MONGO_URL: 'mongodb://mongo:27017/app2'
      KAFKA_BOOTSTRAP_SERVERS: 'kafka:9092'
      KAFKA_TOPIC: topic1
    depends_on:
      - mongo
      - kafka

补充说明

docker-compose up命令会聚合所有容器的日志输出,便于实时查看多服务的运行状态与日志信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:20:22