单实例AWS Elastic Beanstalk环境自动重启docker容器

问题描述 投票:0回答:2

我正在尝试在 AWS Elastic Beanstalk 中运行一个旧的 Node.js 项目。它有时会崩溃并且环境健康状况会变为“已降级”,但 EB 不会重新启动容器,而是让它挂起。

查看日志,容器似乎由于某些 socket.io 错误而退出。

这个问题之前有人问过,但是这个答案这个答案,和这个reddit评论都建议配置负载均衡器。但是,我有一个单实例应用程序,根本没有负载均衡器。

是否可以让EB自动重启单实例应用程序?

amazon-web-services docker amazon-elastic-beanstalk
2个回答
0
投票

ELB(负载均衡器)即使只有一个实例也可以使用,如果你想在未来扩展或考虑其他部署策略,事情可能会更容易。所以使用一个没有技术上的危害(除了它的成本更高,但那是在经济上)。


0
投票

与其重新启动整个 EB 应用程序,不如将应用程序 Dockerize 化,并在失败时重新启动 Docker 本身。

  1. Dockerfile中设置重启策略如下
    CMD ["apache2ctl", "-D", "FOREGROUND", "--restart=on-failure"]
  1. Dockerrun.aws.json 文件并使用 EB CLI 部署代码
    {
      "AWSEBDockerrunVersion": "1",
      "Image": {
        "Name": "<your-image-name>"
      },
      "Ports": [
        {
          "ContainerPort": "80"
        }
      ],
      "RestartPolicy": {
        "Name": "on-failure",
        "MaximumRetryCount": 5
      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.