使用 Elastic Beanstalk 创建开发和生产环境?

4
我创建了一个Django项目并成功部署到了Elastic Beanstalk环境中,假设它被称为 app_name 。然而,我意识到我需要两个环境: 开发 生产 。这样的目的是为了在 开发 中尝试一些东西,当我知道它完全有效时,我可以将其部署在 生产上供公众使用。

我试图查找他们的文档,并找到了使用EB CLI管理多个Elastic Beanstalk环境作为一组。它基本上说您可以使用以下命令在一个项目中创建一组环境。

~/workspace/project-name$ eb create --modules component-a component-b --env-group-suffix group-name

然而,我不确定什么是组。我的意思是,我只需要一个开发生产环境。

我对此还比较陌生。为了达到这个目的,我该如何创建和管理开发生产环境?如果有人能够为我解决问题,我将非常感激。

1个回答

3

运行一组环境更多是为了不同的服务执行不同的任务。你可以有一个处理 Service One 的环境,以及一个处理 Service Two 等的环境。这不是你真正想要的。

你只需要在与生产环境相同的 application 中拥有一个环境。它不一定要在同一个应用程序中,但我喜欢这样做,因为这对于将应用程序版本部署到开发环境,然后在经过测试后将应用程序版本部署到生产环境非常有用。

一个简单的方法是运行 eb clone app_name(其中 app_name 是你的生产环境的名称)。

这将克隆你的生产环境并提示你给它一个名称,你可以将其设置为 app_name_dev。从那里,你可以编辑你的开发环境,使其更适合开发(也许你会让实例变小,更改软件变量,如 MAIL_DRIVER=mailgun 到 MAIL_DRIVER=mailtrap,将其连接到 dev 数据库而不是 prod 数据库等)。

缺点是如果你的生产环境当前正在运行作业或执行任何有意义的操作,你可能不希望立即克隆它,因为新的开发环境也可能在你成功更新其配置以指向开发数据库之前开始执行这些操作。如果是这种情况,你只需运行 eb create my_app_dev 并从头开始配置它。


非常感谢您的回答。因此,总结一下您所解释的内容:在同一个应用程序中创建两个类似的环境(开发和生产),两者都引用同一个项目存储库? - adrilz
@adrilz 没错。两个相似的环境(开发和生产)不会相互链接,因此即使它们引用同一代码库,它们也可以运行不同版本的代码。 - Eden Dowling-Mitchell
这两个环境可能彼此不相连,但它们指的是同一个项目。我知道你可以通过使用不同的分支(比如开发和主分支)来拥有项目的两个版本,但是像数据库名称这样的设置一旦你将开发分支合并到主分支中,就会变成相同的。当然,你可以选择要合并哪些部分,但我觉得这样做效率不高。你是如何处理这种情况的呢? - adrilz
没事了,我想我已经搞明白了。我刚意识到分支不是以前说的那样工作的。我可以保留两个版本,而不必每次选择合并哪一部分。谢谢你,Eden。抱歉我问了太多问题。 - adrilz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接