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

Docker命令无法找到配置文件:pm2镜像启动异常及docker-compose配置疑问

问题解析与解决方案

为什么pm2会在根目录/下查找pm2.json?

这事儿大概率和容器的工作目录配置以及文件挂载有关。

keymetrics/pm2这个镜像默认的工作目录(WORKDIR)是/app,当你执行pm2-runtime start pm2.json时,pm2会在容器的当前工作目录下寻找这个配置文件。出现找不到/pm2.json的错误,主要是两种情况:

  • 你在运行Docker命令时,通过-w /参数把容器的工作目录改成了根目录,导致pm2直接在/下找文件;
  • 你没把本地包含pm2.json的目录挂载到容器的/app目录——容器是完全隔离的环境,本地文件不会自动同步进去,必须通过卷挂载才能让容器访问到。

先解决启动失败的问题(Docker命令方式)

你只需要把本地的工作目录(就是有pm2.json的那个目录)挂载到容器的/app目录,让pm2能在默认工作目录找到配置文件:

docker run -v $(pwd):/app keymetrics/pm2 pm2-runtime start pm2.json

这里$(pwd)会自动替换成你本地的当前工作目录,挂载后容器里的/app就和本地目录同步了,pm2自然能找到pm2.json。

如果你的配置文件不在本地当前目录,或者需要自定义容器工作目录,也可以这样写:

docker run -v /本地绝对路径/到配置目录:/my-work-dir -w /my-work-dir keymetrics/pm2 pm2-runtime start pm2.json

使用docker-compose运行的配置

当然可以用docker-compose来管理,配置起来更清晰。下面是一个基础的docker-compose.yml示例:

version: '3.8'
services:
  pm2-node-app:
    image: keymetrics/pm2
    # 把本地当前目录挂载到容器默认的/app工作目录
    volumes:
      - ./:/app
    # 指定启动命令
    command: pm2-runtime start pm2.json

如果你的pm2.json或者应用代码在其他路径,只需要调整volumes里的挂载路径就行。比如你的配置文件在./configs目录下:

volumes:
  - ./configs:/app

要是你需要自定义容器的工作目录,加个working_dir字段就行:

services:
  pm2-node-app:
    # ...其他配置
    working_dir: /custom-workdir
    volumes:
      - ./:/custom-workdir

记得确保pm2.json里引用的所有文件(比如你的Node.js应用代码)都被正确挂载到容器里,不然pm2启动应用时还会出现找不到文件的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:30:33