我有一个使用heroku的rails应用程序。我想知道我是如何从Heroku迁移到AWS Elastic Beanstalk的。
我使用Heroku postgres,我在工作dynos上运行cron作业。
我在互联网上搜索,但大多数链接都使用docker,但我需要原生解决方案。
编辑: 我最好为稍后阅读的人写一些东西。
首先,我们在弹性beanstalk上设置环境变量。接下来,我们为RDS配置了database.yml文件。您可以按照this blog post进行这些初始设置步骤。
在这个过程中,sidekiq是最让我们受伤最多的事情。我们使用Amazon ElastiCache创建了一个redis实例。然后我们更改了redis和sidekiq配置设置。在这方面,this blog post在这方面对我们非常有用。
下一步是备份我们的数据库并恢复到RDS。在此步骤之后,我们配置了ssl和dns设置。
同时,如果项目中有force_ssl配置设置,则会导致项目在新打开的弹性beanstalk环境中失败。因为弹性beanstalk默认没有任何ssl定义。
答案 0 :(得分:1)
你在使用Heroku postgres吗?拉一个备份。将备份还原到RDS实例(不是由EBS启动的实例)。如果需要,您可以使用AWSbuild,codecommit和pipelines等AWS服务。否则打包您的仓库并将其上传到EBS。在EBS中设置环境变量,并关注AWS如何附加数据库。如果您需要一名工人,您需要就如何做到这一点做出一些决定。 EBS现在具有您可以使用的工作层,但您必须对您的应用进行一些更改。
您对我们的需求越具体,我们就越能提供帮助。
答案 1 :(得分:0)
Cron在EB上可能有点棘手(特别是与Heroku调度程序相比)。 This应该让你到那儿。
我还建议您保留一份您常用的常用heroku命令的EB翻译备忘单。例如,假设您已经完成eb ssh
:
heroku run console
变为cd /var/app/current && rails c
heroku logs -t
变为cd /var/app/current && tail -f log/*.log
然后继续。有点痛苦,但你有一个真正的shell,所以它更适应你正常的dev env调试习惯(比如,tail -f log/sidekiq.log
如果你只想看你的sidekiq日志)。