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

单实例AWS Elastic Beanstalk环境下如何自动重启Docker容器

可以让Elastic Beanstalk自动重启单实例应用,以下是几种可行方案:

方案1:通过.ebextensions配置systemd自动重启进程

Elastic Beanstalk的Node.js环境默认用systemd管理应用进程,你可以通过配置文件强制开启崩溃重启策略:

  • 在项目根目录创建.ebextensions文件夹
  • 新建01_app_restart.config文件,写入以下内容:
files:
  "/etc/systemd/system/nodejs.service.d/override.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      [Service]
      Restart=always
      RestartSec=5
commands:
  reload_systemd:
    command: systemctl daemon-reload && systemctl restart nodejs

这个配置会修改Node.js服务的systemd配置,设置进程崩溃后每隔5秒自动重启,最后重载systemd并重启服务生效。

方案2:用PM2进程管理器托管应用

PM2本身自带进程守护功能,能自动重启崩溃的Node.js应用,集成到EB也很简单:

  • 先在项目里安装PM2:npm install pm2 --save
  • 在package.json的scripts里添加启动命令:
"scripts": {
  "start": "pm2 start app.js --name your-app-name && pm2 logs"
}
  • 或者直接在EB控制台的“配置”→“软件”里,把“启动命令”改成pm2 start app.js
    PM2会在后台监控进程,一旦崩溃立即重启。

方案3:调整EB的健康检查与自动恢复设置

单实例环境也能配置EB的健康检查触发自动恢复:

  • 登录EB控制台,进入你的环境
  • 点击“配置”→“运行状况检查”
  • 设置“成功阈值”“失败阈值”(比如失败3次就触发恢复)
  • 然后到“自动恢复”选项(部分区域可能在“运行状况检查”下方),启用“单实例自动恢复”,当EB检测到应用健康状态持续为Degraded时,会自动重启整个EC2实例,间接让应用重新启动。

注意:如果是容器级别的退出,方案1和2更直接;如果是实例级别的问题,方案3更有效。针对你遇到的socket.io错误导致容器退出,优先试试方案1或2,能快速解决进程崩溃不重启的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:35