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

Docker已正确安装但进程无法启动,Spring Boot容器启动失败

问题:Spring Boot Docker实时开发启动报错

需求

构建Spring Boot后端,通过Docker运行并配置卷映射,实现代码变更无需重新构建镜像的实时开发。

当前配置文件

Dockerfile

FROM jelastic/maven:3.9.5-openjdk-21 AS build

WORKDIR /app

COPY .mvn/ .mvn
COPY mvnw pom.xml ./

RUN ./mvnw dependency:go-offline

COPY src ./src

FROM openjdk:21 AS runner
WORKDIR /app

ENV SPRING_DEVTOOLS_OPTIONS="restart=on-failure"

COPY --from=build /app/ .

EXPOSE 8081

CMD ["./mvnw", "spring-boot:run"]

docker-compose.yml

services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8081:8081"
    volumes:
      - ./:/app
    environment:
      - SPRING_DEVTOOLS_OPTIONS=restart=on-failure

问题现象

执行docker-compose up启动后,容器构建完成,但Spring Boot启动报错:

Using Docker Compose file '/app/docker-compose.yml'
Application run failed
Unable to start docker process. Is docker correctly installed?

已尝试操作

  • 卸载并重新安装Docker Desktop
  • 重启电脑

解决方案及说明

核心问题分析

  1. 全目录挂载导致冲突:原配置./:/app将本地整个项目目录挂载到容器内,覆盖了容器内构建的内容,同时本地的docker-compose.yml被带入容器,若项目中存在Docker相关自动配置,会触发Spring Boot尝试启动Docker进程,但容器内未安装Docker环境,因此报错。
  2. 多阶段构建不匹配开发场景:原Dockerfile的多阶段构建是为生产环境精简镜像,开发场景下无需该模式,直接使用包含Maven的镜像更适合实时编译。

修改后的配置文件

Dockerfile

# 直接使用包含Maven和JDK的镜像,适配开发环境
FROM jelastic/maven:3.9.5-openjdk-21

WORKDIR /app

# 先复制依赖配置文件,利用Docker缓存减少重复下载
COPY .mvn/ .mvn
COPY mvnw pom.xml ./

# 预下载依赖,加快后续启动速度
RUN ./mvnw dependency:go-offline

EXPOSE 8081

# 启动Spring Boot开发模式,明确开启devtools自动重启
CMD ["./mvnw", "spring-boot:run", "-Dspring.devtools.restart.enabled=true"]

docker-compose.yml

services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8081:8081"
    volumes:
      # 仅挂载src目录,实现代码实时同步
      - ./src:/app/src
      # 挂载Maven配置和脚本,确保依赖管理一致
      - ./.mvn:/app/.mvn
      - ./mvnw:/app/mvnw
      - ./pom.xml:/app/pom.xml
      # 可选:挂载本地Maven仓库,避免重复下载依赖
      - ~/.m2:/root/.m2
    environment:
      # 开启Spring DevTools自动重启
      - SPRING_DEVTOOLS_RESTART_ENABLED=true

操作步骤

  1. 替换原Dockerfile和docker-compose.yml为上述修改后的内容
  2. 执行docker-compose down清理旧容器
  3. 执行docker-compose up --build重新构建并启动服务
  4. 修改本地src目录下的代码,Spring DevTools会自动重启应用,无需重新构建镜像

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:31:27