为什么我的弹性 beantalk 实例在我部署时被替换?

why is my elastic beanstalk instance being replaced when I deploy?

我有一个基于 docker 的弹性 beanstalk 环境,在 rails Web 应用程序上托管了一个 ruby。环境是单实例框。
每当我发出 eb deploy 命令时,elastic beanstalk 都会终止实例并启动一个新实例。我原以为 EB 会在同一实例中启动一个新容器并将其与旧容器交换。
此实例终止导致停机。 是否有一种无需停机即可将 docker 部署到 elastic beanstalk 中的自动化方法?
我找到的唯一解决方案是 "swap URLs" 功能。但是我觉得很麻烦。

Is there an automated way to deploy docker into elastic beanstalk without downtime?

  1. 将新的 docker 图像推送到具有您在 elastic beanstalk 中使用的相同标签的相同 dockerbub/dockerregistry 存储库。
  2. 将 Beanstalk 大小更改为 2 以使用新版本的 docker 容器启动新服务器。
  3. 终止旧实例并允许 EB 替换它,等待替换变得健康。*
  4. 将 EB 大小改回 1。

* 如果您在将大小减小到 1 时不让第二个实例恢复健康,则可能会终止健康的实例。

在 Elastic Beanstalk 环境的配置设置下,您会找到 更新和部署。在 Application Deployments 下,您可以设置 Batch type 以满足您的要求。

对于此过程,您需要将 运行 个实例增加到至少两个。