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

Docker容器重启报错/usr/bin/pm2不存在,Dockerfile已安装pm2如何解决

问题原因
  1. Alpine Linux系统下npm全局安装的二进制文件默认存放路径为/usr/local/bin/pm2,你脚本中硬编码的/usr/bin/pm2路径与实际安装路径不匹配,导致系统找不到可执行文件。
  2. Docker构建缓存复用了历史异常层,可能之前构建时pm2安装失败,后续未清理缓存重复构建时直接复用旧层,导致pm2实际未正确安装。
  3. 部分版本Alpine官方源中的nodejs、npm包存在依赖缺失或版本过低问题,安装pm2时未正确生成全局可执行软链。
解决方法
  • 修正启动脚本路径
    编辑你的start.sh文件,将第5行的/usr/bin/pm2替换为实际安装路径/usr/local/bin/pm2,也可直接写pm2(系统会自动从PATH环境变量中匹配路径)。
  • 优化Dockerfile配置
    调整Dockerfile中pm2安装逻辑,安装完成后手动创建软链匹配你脚本的路径,示例修改如下:
    FROM ethereum/client-go
    
    RUN apk update && apk add bash
    RUN apk add --update git bash nodejs npm perl
    
    RUN cd /root &&\
    git clone https://github.com/cubedro/eth-net-intelligence-api &&\
    cd eth-net-intelligence-api &&\
    npm install &&\
    # 先更新npm到最新版本避免安装异常
    npm install -g npm@latest &&\
    npm install -g pm2 &&\
    # 手动创建软链适配脚本路径
    ln -sf /usr/local/bin/pm2 /usr/bin/pm2
    
    ADD start.sh /root/start.sh
    ADD app.json /root/eth-net-intelligence-api/app.json
    RUN chmod +x /root/start.sh
    
    ENTRYPOINT /root/start.sh
    
  • 清理缓存重新构建
    执行构建时添加--no-cache参数避免旧缓存干扰,命令如下:
    sudo docker-compose build --no-cache
    sudo docker-compose down && sudo docker-compose up -d
    
    容器启动完成后再执行geth attach命令即可正常操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:07