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

执行docker-compose up时出现npm No such file or directory错误如何解决

Docker Compose 启动npm报错修复方案

错误根因

你遇到的报错核心有两个问题:

  1. 容器运行时工作目录不对,npm找不到/usr/src/osjs/package.json文件
  2. 宿主挂载的文件权限和容器内运行用户(node用户)的权限不匹配,导致npm写入文件时触发EACCES权限拒绝

修复步骤

1. 补全docker-compose.yml的工作目录配置

在你的my-docker-compose.yml的hafez服务下新增working_dir配置,指定npm运行的工作目录:

version: "3"

services:
  hafez:
    image: hafez/hafez:version1.1
    restart: always
    container_name: hafez
    working_dir: /usr/src/osjs # 新增这行,指定工作目录
    ports:
      - 8000:8000
    volumes:
      - ./config1.js:/usr/src/osjs/src/client/config.js
      - ./config2.js:/usr/src/osjs/src/server/config.js

2. 修复权限不匹配问题

两种方案可选:

  • 测试环境快速验证方案:直接用root用户运行容器,在服务下新增user: root配置即可:
    services:
      hafez:
        # 其他配置不变
        user: root # 新增这行
    
  • 生产环境标准方案:对齐宿主文件和容器内node用户的UID/GID
    1. 先查询容器内node用户的UID:docker run --rm --entrypoint bash hafez/hafez:version1.1 -c "id -u node",假设返回值为1000
    2. 修改本地myDirectory目录下所有文件的所有者:sudo chown -R 1000:1000 /你的/myDirectory/本地路径/*

3. (可选)补全启动命令

如果修改完后仍然报错nodemon使用错误,说明commit镜像时没有保留原容器的启动命令,新增command配置指定启动脚本:

services:
  hafez:
    # 其他配置不变
    command: npm run start # 替换为你原正常容器的启动命令,比如开发环境是npm run dev

4. 验证启动

执行以下命令重启容器:

# 先清理之前创建的异常容器
docker-compose -f my-docker-compose.yml down -v
# 重新启动
docker-compose -f my-docker-compose.yml up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:24:01