如何解决Spring Docker Compose中Docker JSON解析失败问题?
修复Spring Docker Compose启动时的JsonParseException错误
问题概述
启动Spring Boot应用时,使用Docker Compose模块出现以下JSON解析错误:
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'name': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: (String)
环境信息
- Spring Boot版本:3.2.3
- 操作系统:Ubuntu WSL
- Docker Compose版本:v2.25.0
- Docker Engine版本:26.0.0
错误原因分析
- docker-compose.yaml格式错误:volumes段的driver配置语法错误,将
driver: local错误写成嵌套结构,导致Docker Compose输出内容不符合Spring模块预期格式。 - 版本适配问题:较新版本的Docker Compose(v2.x)部分命令输出格式,与Spring Boot 3.2.3的Docker Compose模块存在适配冲突,导致模块接收到YAML格式输出而非预期的JSON格式。
修复步骤
步骤1:修正docker-compose.yaml语法错误
原配置中volumes的driver配置存在缩进错误,修改为正确的键值对格式:
version: '3.8' services: db: image: mongo:latest ports: - '27017:27017' volumes: - db:/data/db volumes: db: driver: local # 去掉不必要的缩进,修正为直接赋值
步骤2:强制Docker Compose输出JSON格式
若修正yaml后仍报错,可通过Spring配置强制Docker Compose输出JSON格式。在应用配置文件(application.properties)中添加:
spring.docker.compose.command=docker compose --format json up -d
或使用YAML格式配置:
spring: docker: compose: command: docker compose --format json up -d
步骤3:降级Docker Compose版本(可选)
若上述方法无效,可尝试将Docker Compose版本降级至与Spring Boot 3.2.3更兼容的版本(如v2.20.0),规避版本适配问题。
验证修复
重启Spring Boot应用,检查是否能正常启动Docker Compose服务,且不再出现JSON解析错误。
内容的提问来源于stack exchange,提问作者sub
相关产品推荐
相关产品推荐

