docker-compose.yaml配置无效 提示services/networks不支持如何解决
报错核心原因
你遇到的配置不支持错误,本质是YAML语法格式问题,另外配置里还存在一个会导致后续启动失败的隐藏冲突:
- 根因:
docker-compose.yaml中顶层的services字段前面多了1个前置空格。YAML对缩进规则要求极严,所有顶层配置项必须顶格书写,不能有前导空格。当前写法会让Compose解析器无法识别services、networks这两个合法顶层配置块,直接抛出不支持对应配置的报错。 - 隐藏问题:
itvdelab和itvdflab两个服务都绑定了宿主机的8888端口,就算修复缩进问题,两个服务同时启动时会触发宿主机端口占用冲突,依然会启动失败。
修改方案
- 删除
services:行前的所有前置空格,保证该字段顶格书写;同时确认下方的networks:字段同样顶格,无前置空格。 - 调整重复的端口映射规则,避免端口冲突。比如将
itvdelab的宿主机映射端口改为8889,和itvdflab的8888端口错开即可。
修改后可正常运行的配置参考
# 注意:services必须顶格,前面不能留任何空格 services: itvdelab: image: itversity/itvdelab hostname: itvdelab ports: # 调整宿主机端口为8889,避免和itvdflab的8888端口冲突 - "8889:8888" volumes: - "./itversity-material:/home/itversity/itversity-material" - "./data:/data" environment: SHELL: /bin/bash networks: - itvdelabnw depends_on: - "cluster_util_db" cluster_util_db: image: postgres:13 ports: - "6432:5432" volumes: - ./cluster_util_db_scripts:/docker-entrypoint-initdb.d networks: - itvdelabnw environment: POSTGRES_PASSWORD: itversity itvdflab: build: context: . dockerfile: images/pythonsql/Dockerfile hostname: itvdflab ports: - "8888:8888" volumes: - "./itversity-material:/home/itversity/itversity-material" - "./data:/data" environment: SHELL: /bin/bash networks: - itvdelabnw depends_on: - "pg.itversity.com" pg.itversity.com: image: postgres:13 ports: - "5432:5432" networks: - itvdelabnw environment: POSTGRES_PASSWORD: itversity # networks同样需要顶格书写 networks: itvdelabnw: name: itvdelabnw
启动验证
修改完成后,可以先执行docker-compose config命令校验配置语法,命令能正常输出解析后的完整配置就说明格式无误,之后再执行原启动命令即可:docker-compose up -d --build itvdflab
内容的提问来源于stack exchange,提问作者Haris Mahmood
相关产品推荐
相关产品推荐

