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

远程Git上下文构建Node.js Docker镜像时出现package.json路径错误

问题描述

计划为Node.js应用创建Docker构建,指定包含Dockerfile的远程Git仓库URL作为构建上下文。执行docker-compose up --build时,镜像构建成功,但容器启动时出现错误:npm ERR! path /code/package.json。

我的Dockerfile

FROM node:16.15.0 as develop-stage
WORKDIR /code
COPY package.json .
# 使用package-lock文件固定安装模块的版本
COPY package-lock.json .
RUN npm install
COPY . .

我的docker-compose配置

version: '3.8'
services:
  my-service:
    container_name: my-service
    build: 
      context: 'https://username:token@bitbucket.org/abc/test-repo'
      dockerfile: Dockerfile
    volumes:
      - .:/code
      - /code/node_modules
    command: nodemon index.js
    networks:
      - my-network
    expose:
      - 9608
    ports:
      - 9608:9608
    restart: on-failure
volumes:
  my-data:
    external: false
networks:
  my-network:
    external: false
解决方案

问题根源

构建阶段已经将远程仓库的package.json和代码复制进镜像,但启动容器时,volumes中的- .:/code将本地当前目录挂载到容器的/code目录,直接覆盖了镜像内原本的文件。如果本地当前目录没有package.json,容器内自然找不到该文件,触发npm报错。

解决办法

  • 无需本地代码热重载场景:直接删除volumes里的- .:/code挂载项。镜像已包含远程仓库的完整代码,不需要用本地目录覆盖。修改后volumes仅保留- /code/node_modules即可(若不需要保留容器内的node_modules,这条也可移除)。
  • 需要本地挂载调试场景:先将远程Git仓库克隆到本地目录,再修改docker-compose.yml的build.context为本地项目路径(比如./test-repo),确保本地目录存在package.json和完整项目文件后,再执行构建启动命令。

内容的提问来源于stack exchange,提问作者power-cut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:22:23