运行docker compose启动Jenkins容器时报docker-compose.yml network类型错误
Docker Compose 启动Jenkins报网络类型错误排查
报错信息
执行容器启动命令时返回如下错误:
ERROR: In file './docker-compose.yml', network must be a mapping, not a string.
当前使用的Docker版本为20.10.3,构建版本48d30b5,原始配置存在多处YAML语法与层级错位问题,是触发报错的核心原因。
原配置文件存在的具体问题
- 层级缩进错位:原本属于顶层定义的
networks块被错误缩进至services节点内部,compose解析器读取到非服务定义的内容时,对网络配置做类型校验不通过,直接抛出报错 - 服务配置项拼写错误:Jenkins服务下使用了单数形式的
volume字段,正确的Docker Compose配置字段为复数形式的volumes - YAML列表项格式不规范:所有列表项的短横线与后续值之间缺少空格,例如
-"8080":"8080"、-"$PWD/jenkins_home:/var/jenkins_home"、-net,这类写法会被YAML解析为单个字符串,而非结构化的列表配置 - 顶层网络定义格式错误:末尾的
networks: net直接将网络名作为字符串值挂载在networks节点下,按照compose语法要求,每个自定义网络必须是映射类型的配置条目,不能直接写字符串
修正后的可用配置
将配置文件调整为如下内容即可正常启动:
version: '3' services: jenkins: container_name: jenkins image: jenkins/jenkins ports: - "8080:8080" volumes: - "$PWD/jenkins_home:/var/jenkins_home" networks: - net # 顶层网络定义与services节点保持同层级,不缩进 networks: net: driver: bridge
修改完成后在配置文件所在目录执行docker compose up -d,即可正常拉起Jenkins容器。
内容的提问来源于stack exchange,提问作者Sreenath Reddy Seelam
相关产品推荐
相关产品推荐

