你怎么称呼DB:种子在AWS弹性魔豆的应用程序?(How do you call db:seed o

2019-08-07 03:11发布

我知道,你可以为每个部署的一部分运行的任务,但我只想要一次引导数据库。

Answer 1:

克里斯蒂安的答案是接近的,但你也应该补充:

container_commands:
  seeddb:
    command: 'export HOME=/root; rake db:seed'
    leader_only: true

从而使DB只从1个EC2实例种子,而不是所有的人都在同一时间。 根据您的EB部署/版, export HOME可能会或可能不会需要。



Answer 2:

我曾经在这个地址提供的信息来创建一个脚本,将运行迁移后每个部署后: http://www.emind.co/how-to/how-to-run-rake-dbseed-in-amazon-弹性魔豆

我更喜欢这种方法,这样我就可以跟踪对EC2实例的文件。 当我最初部署这个在我的旧服务器(这是运行Linux <1.0.9),我没有问题。 不过,我最近有升级服务器的机器到64位Linux的亚马逊2014.03 v1.0.9运行的Ruby 2.0(彪马)和脚本开始失败。 如果您使用的是不同的Linux版本也很可能会失败。

这里的关键是/ usr / local / bin目录/你的rake命令使用正确的耙子。 我把这个直接从上的/ opt / elasticbeanstalk /钩/ appdeploy /前/中发现的其它脚本:

#.ebextensions/db_seed.config
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/13_db_seed.sh":
    mode: "00755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      . /opt/elasticbeanstalk/containerfiles/envvars
      cd $EB_CONFIG_APP_ONDECK
      su -c "leader_only /usr/local/bin/rake db:seed" $EB_CONFIG_APP_USER ||
      echo "Rake task failed to run, skipping seeding."
      true

应当指出的是,该脚本仍然不正确的,因为我,如果你打算运行任何rake命令(这是目前在AWS上的其他脚本功能请求)时没有运行“捆绑高管耙”,这是非常建议。 如果你想拥有所有脚本运行“回扣”前束EXEC看看这里张贴的.config文件: https://github.com/alienfast/elastic-beanstalk

如果这还不为你工作,我建议ssh方式连接到运行你的应用程序,或部署一个新的运行相同的Linux / Ruby的版本,并定位到“/选择/ elasticbeanstalk /钩/ appdeploy您的EC2实例之一/前/”,看看有什么其他的脚本都在做。

我希望别人有所帮助!



Answer 3:

做你青苗弹性实例的命令,你可以设置自定义命令配置当你更新你的应用程序,将获得运行。 ( 事实上,有专门为不同类型的容器的命令,你可以做一个整体的文档页面 )。

  1. 如果你不已经有一个.ebextensions在应用程序的根目录下,创建一个。
  2. 你把这里的任何文件将被运行。 它命名为任何你想要的,只要它与“结尾.config ” -我任意命名矿seed.config
  3. 从什么hfogel写的借款,你可以把东西在里面是这样的:

     container_commands: 01seed: command: rake db:seed 
  4. 这个新的代码添加到您的回购协议: git add . 然后git commit -m 'added seed config script'然后git push

  5. 然后把这个新的代码添加到您的AWS实例EB(S): git aws.push

要验证您的命令居然跑,进入你的弹性青苗控制台,并展开详细为您的环境,并导航到logs选项卡,并刷新您的日志,并查看它们。 里面就有,只需做一个ctrl + f为“种子”,直到你看到你的种子命令运行。 如果你没有看到它在那里的某个地方,那么它没有运行。



Answer 4:

我发现的唯一方法是ssh到EC2实例并运行“耙分贝:种子RAILS_ENV =生产的”手动从在/ var /应用/电流。



Answer 5:

这是一段时间,因为这个问题是问,所以也许你已经想通了。 无论如何,你可以在.beanstalk文件夹中添加名为(例如)文件seed.config。 进入这样的事情,你的种子将被运行:

container_commands:
  01seed:
    command: rake db:seed


文章来源: How do you call db:seed on AWS Elastic Beanstalk apps?