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

Docker部署问题:npm无法找到package.json文件求助

解决Docker构建时npm找不到package.json的问题

问题场景

项目目录结构如下:

app
--docker-compose
----docker-compose.yml
----Dockerfile
--package.json
--...

使用docker-compose构建容器时,出现npm无法找到package.json的错误,但将docker-compose.yml和Dockerfile移到项目根目录后,构建运行一切正常。

配置文件内容

docker-compose.yml

services:
  dev:
    container_name: animals_api_dev
    image: animals-api-dev:1.0.0
    build:
      context: ../
      target: development
      dockerfile: ./docker-compose/Dockerfile
    command: npm run start:debug
    ports:
      - ${SERVER_PORT}:${SERVER_PORT}
    environment:
      - MONGO_HOST=${MONGO_HOST}
      - MONGO_PORT=${MONGO_PORT}
      - MONGO_USERNAME=${MONGO_USERNAME}
      - MONGO_PASSWORD=${MONGO_PASSWORD}
    networks:
      - animals-api-network
    depends_on:
      - mongo-database
      - mongo-express
      - redis
    volumes:
      - .:/usr/src/app
    restart: unless-stopped

networks:
  animals-api-network:
    driver: bridge

Dockerfile

FROM node:18-alpine As development

WORKDIR /usr/src/app

COPY --chown=node:node package*.json ./

RUN npm ci

COPY --chown=node:node . .

USER node

问题原因

错误出在docker-compose.yml的volumes配置上:

  • 由于docker-compose.yml位于docker-compose文件夹内,配置中的.代表当前目录(即docker-compose文件夹)。
  • 这个目录被挂载到容器的/usr/src/app后,完全覆盖了Docker构建阶段复制到该目录的项目文件(包括根目录的package.json)。
  • 容器启动后执行npm run start:debug时,/usr/src/app里只有docker-compose文件夹的内容,自然找不到package.json。

解决方案

修改docker-compose.yml中的volumes配置,将挂载路径改为项目根目录:

volumes:
  - ../:/usr/src/app

这样挂载的是项目根目录(app文件夹),与构建时指定的context: ../保持一致,容器内的/usr/src/app就能正确包含package.json及其他项目文件,npm命令可以正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:17