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

如何使用单个Dockerfile同时运行两个Telegram付费群组监控服务

现有配置核心问题

  • pm2未预装:你使用的node:12-alpine基础镜像默认没有安装pm2,直接执行pm2命令会触发命令不存在报错
  • start.sh无执行权限:Docker构建阶段没有给启动脚本赋予可执行权限,容器启动时会触发权限错误
  • 无前台保活进程:你当前的start.sh执行完pm2启动命令后就会直接退出,Docker会判定主进程结束自动终止容器,两个服务没有持续运行的基础
  • 路径配置冲突:Dockerfile中的WORKDIR用了相对路径,start.sh中又做了一次cd跳转,容易出现文件找不到的问题

调整方案

1. 修改start.sh内容

#!/bin/bash
pm2 start services/kickNonPremium.js --name KICK_NONPREMIUM
pm2 start services/monitorTelegramJoinee.js --name MONITOR_JOINEE
# 保持前台运行输出日志,防止容器退出
pm2 logs --follow

2. 修改Dockerfile内容

FROM node:12-alpine
# 指定绝对路径作为工作目录,避免相对路径混乱
WORKDIR /TelegramChannelMonitor
# 全局安装pm2
RUN npm install pm2 -g
COPY package*.json ./
RUN npm install
# 复制所有项目文件到工作目录
COPY . .
# 给启动脚本赋予可执行权限
RUN chmod +x ./start.sh
# 若两个服务不需要对外暴露8080端口,可删除这一行
EXPOSE 8080
ENTRYPOINT ["./start.sh"]

轻量化可选方案

如果不需要pm2的崩溃自动重启、日志管理能力,可以不用安装pm2,直接修改start.sh如下即可运行:

#!/bin/bash
node services/kickNonPremium.js &
node services/monitorTelegramJoinee.js &
# 等待所有后台进程结束,保持容器运行
wait

内容的提问来源于stack exchange,提问作者Mani Kant Tiwari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:42:02