在 ec2 实例中部署 eb 后,ruby 应用程序 aws 数据丢失

Posted

技术标签:

【中文标题】在 ec2 实例中部署 eb 后,ruby 应用程序 aws 数据丢失【英文标题】:ruby application aws data loss after eb deploy in ec2 instance 【发布时间】:2016-09-07 03:34:30 【问题描述】:

我按照本教程 (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html) 在 AWS Elastic Beanstalk 上部署了我的 rails 应用程序。

但是现在当我部署新版本(使用命令 $ eb deploy)而不是更新应用程序时,它会重置我的所有数据。 我不知道如何更新微小的更改,即使在 html 文件中也是如此。 我也试过 DeleteOnTerminate = false,但没有用。

有什么方法可以让我在不丢失数据的情况下更新我的应用程序?

【问题讨论】:

【参考方案1】:

您的问题并未说明您是如何保存数据的,但您首先需要了解的是,Elastic Beanstalk 应用程序本质上是在短暂状态下运行的。

这意味着,每当您使用 eb deploy 时,运行您的应用程序的“服务器”都会被完全破坏,而会启动另一个服务器。

在不同部署之间保持数据持久性的唯一方法是使用应用外部的源(如 S3 或数据库),并让应用从那里查询数据。

【讨论】:

它们不在 Docker 容器上运行,但你说的其他一切都是正确的。 没错,我们在环境中运行了 docker 容器,所以我认为它是标准 beanstalk 配置的一部分,但现在我看到还有其他选项。我已经编辑了我的答案,谢谢你的提示。 我只是保存一个有两个字符串的模型,您可以访问我的应用程序 (xyzurl.com)。但不知道如何将其保存在 S3 等应用程序之外。 持久化您的数据并不复杂,但超出了这个问题的范围,我建议阅读有关将您的 ruby​​ 应用程序与 S3 或 RDS 集成的方法,然后实施您认为适合您的应用程序的方式。 感谢您的帮助,我只是将数据保存在 RDS 之外,现在可以使用了。

以上是关于在 ec2 实例中部署 eb 后,ruby 应用程序 aws 数据丢失的主要内容,如果未能解决你的问题,请参考以下文章

在 EBS 卷上创建文件系统,将其挂载到 EC2 实例并在将实例替换为 CDK 时持久化数据

为啥调整根 EBS 卷大小后 EC2 实例无法正确启动?

在 EC2 中部署的 Tomcat Webapp 无法与 Postgres RDS 实例通信

Laravel AWS EBS 自动扩展

在 EC2 上运行 Java EE 应用程序

将多个 ebs 卷附加到每个 ec2 实例