能否将单实例 Elastic Beanstalk 部署配置为在启动新容器之前停止当前容器?
Can a single-instance Elastic Beanstalk deploy be configured to stop the current container before starting the new one?
我正在努力将旧版本的 YouTrack 升级到最新的 Docker 图像。该图像是有状态的,因为它将其配置和数据存储在安装到容器的 EFS 卷上。
我 运行 在尝试部署版本升级时遇到问题,表现为:
Command failed on instance. Return code: 1 Output:
2500dea09a203c18d36aa997159750e8f1b37a7ad0437bc109a5073f38ce24be Docker container quit unexpectedly
after launch: Docker container quit unexpectedly on Mon Jul 6 23:43:26 UTC 2020: YouTrack is already
running. Check snapshot logs for details. Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh
failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
(引用的日志仅显示相同的错误,后跟一些 'Activity Failed' 条目。)
好像好像:
- EB 将新图像加载到实例。
- 它保留旧图像 运行,同时启动新图像。
- 我猜测新映像检测到另一个版本的 YouTrack 已通过安装的文件系统锁定数据库,然后退出。
我在 中读到滚动更新可以配置为多实例环境的不可变,这会强制在每次部署时创建一个新实例,这听起来好像可以解决问题,但我的单容器单实例环境没有该选项(滚动更新类型只能是 'Disabled')。
我已尝试 eb ssh
进入实例以停止旧容器,但某些东西立即再次启动它 - 已尝试 docker update --restart=no <container>
每个 , and the recommended stop command.
有没有什么方法可以配置 EB 在启动新容器之前停止旧容器(或者使用新实例,这是不太可取的,但可以完成工作)?
成功!不是永久配置,而是一个足够好的解决方法 - this article 给出了如何手动停止容器的答案,然后它只是 运行 部署的情况。
步骤是:
- 使用
eb ssh -i <instance id>
. 通过 SSH 连接到 ElasticBeanstalk 实例
sudo stop eb-docker
告诉 Upstart 停止容器。
docker ps
验证容器不再 运行.
- 正常执行 EB 部署。
我正在努力将旧版本的 YouTrack 升级到最新的 Docker 图像。该图像是有状态的,因为它将其配置和数据存储在安装到容器的 EFS 卷上。
我 运行 在尝试部署版本升级时遇到问题,表现为:
Command failed on instance. Return code: 1 Output:
2500dea09a203c18d36aa997159750e8f1b37a7ad0437bc109a5073f38ce24be Docker container quit unexpectedly
after launch: Docker container quit unexpectedly on Mon Jul 6 23:43:26 UTC 2020: YouTrack is already
running. Check snapshot logs for details. Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh
failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
(引用的日志仅显示相同的错误,后跟一些 'Activity Failed' 条目。)
好像好像:
- EB 将新图像加载到实例。
- 它保留旧图像 运行,同时启动新图像。
- 我猜测新映像检测到另一个版本的 YouTrack 已通过安装的文件系统锁定数据库,然后退出。
我在
我已尝试 eb ssh
进入实例以停止旧容器,但某些东西立即再次启动它 - 已尝试 docker update --restart=no <container>
每个
有没有什么方法可以配置 EB 在启动新容器之前停止旧容器(或者使用新实例,这是不太可取的,但可以完成工作)?
成功!不是永久配置,而是一个足够好的解决方法 - this article 给出了如何手动停止容器的答案,然后它只是 运行 部署的情况。
步骤是:
- 使用
eb ssh -i <instance id>
. 通过 SSH 连接到 ElasticBeanstalk 实例
sudo stop eb-docker
告诉 Upstart 停止容器。docker ps
验证容器不再 运行.- 正常执行 EB 部署。