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

Docker Compose部署多项目报错:路径./springboot未找到

问题分析与解决方案

1. 核心错误:springboot路径不存在

错误提示unable to prepare context: path "./springboot" not found,解决步骤:

  • 检查项目目录结构,确保docker-compose.yml同级目录下存在springboot文件夹,用ls -l命令可直接查看
  • 若实际路径不符,修改springboot服务的context参数,比如实际路径是./backend/springboot,则改为context: ./backend/springboot
  • Linux下可执行chmod -R 755 ./springboot,确保目录具备可读权限

2. Angular服务的问题

配置中有两处明显问题:

  • depends_on: - app:不存在名为app的服务,若Angular需调用SpringBoot接口,应改为depends_on: - springboot
  • build: angular:需确保同级目录下有angular文件夹,且内部包含Dockerfile。生产环境不建议用ng serve直接运行,推荐构建静态文件后用Nginx托管,示例Dockerfile:
# Angular构建镜像示例
FROM node:18-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build --prod

FROM nginx:alpine
COPY --from=build /app/dist/你的Angular项目名 /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

3. SpringBoot服务的优化与修正

  • command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker:直接在容器内运行Maven命令依赖本地缓存,建议先构建Jar包再制作镜像,示例Dockerfile:
# SpringBoot构建镜像示例
FROM maven:3.8.6-openjdk-11 as build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests

FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar", "--spring.profiles.active=docker"]
  • depends_on: - nginx:SpringBoot无需依赖Nginx,通常是Nginx反向代理SpringBoot,可删除该依赖项
  • 检查dockerfile: .docker/app/dockerfile路径,确保springboot目录下确实存在该文件

4. 修正后的docker-compose.yml示例

version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx:1.13
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      # 若用Nginx托管Angular静态文件,添加此行
      # - ./angular/dist/你的项目名:/usr/share/nginx/html
    depends_on:
      - springboot

  angular:
    container_name: angular
    restart: always
    build: ./angular
    depends_on:
      - springboot
    # 仅开发环境用ng serve时需要端口映射,生产环境可删除
    ports:
      - "4200:4200"

  mysql:
    container_name: mysql
    image: mysql/mysql-server:5.7
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: formation123
      MYSQL_ROOT_HOST: '%'
    ports:
      - 3306:3306
    restart: always
    # 添加数据卷持久化,避免容器删除丢失数据
    volumes:
      - mysql-data:/var/lib/mysql

  springboot:
    container_name: springboot
    restart: always
    build:
      context: ./springboot
      dockerfile: .docker/app/dockerfile
    expose:
      - "8080"
    depends_on:
      - mysql

# 定义MySQL数据持久化卷
volumes:
  mysql-data:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:55