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

Docker Compose构建容器报错:系统找不到指定文件,路径异常

问题

在Windows 11 Pro 23H2系统上使用Docker 27.3.1(Docker Desktop 4.35.1)执行docker compose -f docker-compose.dev.yml up --build构建容器时,触发「The system cannot find the file specified」错误。
异常特征:

  • 报错路径末尾会额外追加you-app-backend,例如实际路径变为C:\Users\user\Desktop\YOUAPP_FULLSTACK_PROJECT\you-app-backend\notification-microservice\you-app-backend,而非预期的仅notification-microservice
  • 每次执行命令,报错指向的微服务路径会随机变化

项目文件夹结构:

YOUAPP_FULLSTACK_PROJECT/
├─ you-app-frontend/
├─ you-app-backend/
│  ├─ api-gateway/
│  ├─ auth-microservice/
│  ├─ user-microservice/
│  ├─ notification-microservice/
│  └─ shared/
└─ docker-compose.dev.yml

当前docker-compose.dev.yml配置:

services:
  youapp-frontend-container:
    build:
      context: ./you-app-frontend
      dockerfile: Dockerfile.dev
    container_name: youapp-frontend-container
    ports:
      - "5300:5300"
    volumes:
      - ./you-app-frontend:/youapp_fullstack_project
      - /youapp_fullstack_project/node_modules
    env_file:
      - ./you-app-frontend/.env
    depends_on:
      - api-gateway-container

  api-gateway-container:
    build:
      context: ./you-app-backend
      dockerfile: api-gateway/Dockerfile.dev
    container_name: api-gateway-container
    ports:
      - "3000:3000"
    volumes:
      - ./you-app-backend/api-gateway:/youapp_fullstack_project/you-app-backend/api-gateway
      - /youapp_fullstack_project/you-app-backend/api-gateway/node_modules
      - ./you-app-backend/shared:/youapp_fullstack_project/you-app-backend/shared
    env_file:
      - ./you-app-backend/api-gateway/.env
    environment:
      - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5673
    depends_on:
      - auth-microservice
      - mongo

  auth-microservice:
    build:
      context: ./you-app-backend
      dockerfile: auth-microservice/Dockerfile.dev
    container_name: auth-microservice
    ports:
      - "4001:4001"
    volumes:
      - ./you-app-backend/auth-microservice:/youapp_fullstack_project/you-app-backend/auth-microservice
      # - /youapp_fullstack_project/you-app-backend/auth-microservice/node_modules
      - ./you-app-backend/shared:/youapp_fullstack_project/you-app-backend/shared
    env_file:
      - ./you-app-backend/auth-microservice/.env
    depends_on:
      - mongo

  user-microservice:
    build:
      context: ./you-app-backend
      dockerfile: user-microservice/Dockerfile.dev
    container_name: user-microservice
    ports:
      - "6001:6001"
    volumes:
      - ./you-app-backend/user-microservice:/youapp_fullstack_project/you-app-backend/user-microservice
      # - /youapp_fullstack_project/you-app-backend/user-microservice/node_modules
      - ./you-app-backend/shared:/youapp_fullstack_project/you-app-backend/shared
    env_file:
      - ./you-app-backend/user-microservice/.env
    depends_on:
      - mongo

  mongo:
    container_name: mongo
    image: mongo:latest
    ports:
      - "27017:27017"
    restart: on-failure:5
    volumes:
      - mongo-data:/data/db

  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:latest
    ports:
      - "5673:5672"
      - "15673:15672"
    restart: on-failure:5

volumes:
  mongo-data:

解决方案

1. 修正Dockerfile路径解析错误

问题核心是后端服务的build配置中,context与dockerfile路径的组合在Windows系统下触发了错误的路径拼接,两种修复方式任选其一:

  • 方式一:将context指向对应微服务目录
    以auth-microservice为例,修改后:

    auth-microservice:
      build:
        context: ./you-app-backend/auth-microservice
        dockerfile: Dockerfile.dev
      # 其余配置保持不变
    

    所有后端服务(api-gateway、user-microservice等)都按此格式调整。

  • 方式二:保留backend根目录为context,给dockerfile添加相对路径前缀
    如果需要在构建时共享you-app-backend/shared目录,保留context: ./you-app-backend,将dockerfile改为:

    dockerfile: ./auth-microservice/Dockerfile.dev
    

    (开头的./是关键,避免Windows路径解析时的歧义)

2. 简化容器内挂载路径

当前卷挂载路径嵌套层级过深,容易触发Windows下的路径解析问题,建议简化容器内路径:

api-gateway-container:
  volumes:
    - ./you-app-backend/api-gateway:/app/api-gateway
    - /app/api-gateway/node_modules
    - ./you-app-backend/shared:/app/shared

所有后端服务的卷挂载都按此格式调整,用/app作为容器内的根目录,减少路径层级。

3. 清理Docker缓存并重建

旧的构建缓存可能残留错误路径配置,执行以下命令彻底清理后重新构建:

docker compose -f docker-compose.dev.yml down --rmi all -v
docker system prune -af
docker compose -f docker-compose.dev.yml up --build

4. 验证Docker Desktop文件共享权限

确保Docker Desktop已开启项目所在磁盘的文件共享:

  1. 打开Docker Desktop → 设置 → 资源 → 文件共享
  2. 勾选项目所在的磁盘(比如C盘)
  3. 点击「应用并重启」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:09:54