在 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 时持久化数据