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

Docker Compose部署多服务报错:无法找到pnpm-lock.yaml文件

解决Docker Compose构建时找不到pnpm-lock.yaml的问题

错误原因

构建报错"/pnpm-lock.yaml": not found,核心问题是你把每个服务的build.context设置成了服务目录下的docker子文件夹,但pnpm-lock.yaml实际存放在服务根目录(比如ticket-outlet-backend-api),Docker在docker子目录下找不到该文件,导致校验失败。

解决方案

1. 调整Build上下文与Dockerfile路径

修改每个服务的build配置:

  • 将context指向服务根目录(比如./ticket-outlet-backend-api)
  • 通过dockerfile参数指定docker子目录里的Dockerfile位置(比如docker/Dockerfile)

2. 确保pnpm-lock.yaml存在

进入每个服务的根目录,执行pnpm install命令生成pnpm-lock.yaml文件(如果当前目录还没有的话)。

3. 修正后的docker-compose.yml

version: '3.8'
name: 'ticket-snapper'
services:
  backend_api:
    build:
      context: ./ticket-outlet-backend-api
      dockerfile: docker/Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - ./ticket-outlet-backend-api:/app
    environment:
      - NODE_ENV=development
    networks:
      - ticket-outlet-network

  web_portal_user:
    build:
      context: ./ticket-outlet-web-portal
      dockerfile: docker/Dockerfile
    ports:
      - "3001:3001"
    volumes:
      - ./ticket-outlet-web-portal:/app
    environment:
      - NODE_ENV=development
    networks:
      - ticket-outlet-network

  web_portal_admin:
    build:
      context: ./ticket-outlet-admin-portal-v1
      dockerfile: docker/Dockerfile
    ports:
      - "3002:3002"
    volumes:
      - ./ticket-outlet-admin-portal-v1:/app
    environment:
      - NODE_ENV=development
    networks:
      - ticket-outlet-network

networks:
  ticket-outlet-network:
    driver: bridge

额外说明

如果你的Dockerfile原本就放在服务根目录,直接把build.context设为服务根目录即可,无需指定dockerfile参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:16:16