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
相关产品推荐
相关产品推荐

