【问题标题】:Rails app fails to deploy on elastic beanstalkRails 应用程序无法在弹性 beantalk 上部署
【发布时间】:2017-01-13 05:41:21
【问题描述】:

我有一个使用 ruby​​ 2.3 的 Rails 4 应用程序,我想使用 AWS Ebs 进行部署。我将数据库连接指向现有数据库,我正在使用 cli 进行初始化和创建。当我进入创建部分时,我不断收到一条错误消息:

Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

这当然意味着迁移失败。当我检查它说表已经存在的日志时,我做了一些研究,发现您可以在.ebextensions/ 中包含设置以指定不运行迁移或在测试和开发上运行捆绑包。这是我的.ebextensions/ruby-settings.config

option_settings: BUNDLE_WITHOUT: "test:development" RAILS_ENV: production RACK_ENV: production RAILS_SKIP_MIGRATIONS: true

但是它仍然无法部署并给出相同的错误消息。问题是,我在这里做错了什么?我已经尝试根据在 blog 和 AWS 文档页面 here 上找到的教程以不同的方式重写此配置文件。

任何关于我做错的想法都是有帮助的,因为我目前不知所措。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 amazon-web-services amazon-elastic-beanstalk ebextensions


    【解决方案1】:

    将您的 ruby​​-settings.config 更改为以下,然后尝试迁移。

    option_settings:
            - option_name: BUNDLE_WITHOUT
              value: "test:development"
            - option_name: RAILS_ENV
              value: "production"
            - option_name: RACK_ENV
              value: "production"
            - option_name: RAILS_SKIP_MIGRATIONS
              value: "true"
    

    【讨论】:

    • 同样的问题,当我检查日志时我注意到了这一点:++ export RAILS_SKIP_MIGRATIONS=false++ RAILS_SKIP_MIGRATIONS=false
    • 这很尴尬。在检查了我最近上传的应用程序 zip 后,我发现 .ebextensions 不包括在内。当我开始研究它时,我认为有必要将目录添加到 .gitignore,就像 .elasticbeanstalk 目录一样。当我运行 eb create 时,现在一切正常
    【解决方案2】:

    我发现我的问题的答案是我在我的 .gitignore 中添加了 .ebextensions。在部署过程的早期,已将 .elasticbeanstalk 添加为忽略,我认为需要对 .ebextensions 执行相同操作。一个小小的疏忽导致了很多挫败感。

    值得注意的是,当我的配置文件中确实存在间距问题时,ebcli 向我抛出了一个错误。我相信发布的 error2007s 是有效的,但是其他格式是可以接受的。例如,这是我的一个配置文件的当前格式:

    option_settings:
      aws:ec2:vpc:
        VPCId: vpc-xxxxxxxx
        Subnets: subnet-yyyyyyy,subnet-zzzzzzzz,subnet-wwwwwww,subnet-eeeeeeeee
      aws:autoscaling:launchconfiguration:
        SecurityGroups: sg-00000000
    

    等等……

    我还建议像我一样使用 .ebextensions 设置环境变量:

    option_settings:
      aws:elasticbeanstalk:application:environment:
        RAILS_SKIP_MIGRATIONS: true
        RAILS_ENV: production
    

    【讨论】:

      【解决方案3】:

      文件名:0000.config

      files:
        "/opt/elasticbeanstalk/hooks/appdeploy/pre/02b_set_env_vars.sh":
          mode: "000755"
          owner: root
          group: root
          content: |
            #!/bin/bash
            EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
            cd $EB_APP_STAGING_DIR
            ./set-env.sh
      

      还有一些错误,例如 -

      1. 挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh 失败
      2. ./set-env.sh 未找到

      进入 /opt/elasticbeanstalk/hooks/configdeploy/pre/_setup_envvars.sh

      复制最后两行 -

      EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir) $EB_SUPPORT_DIR/export_envvars

      并粘贴到 0000.config - 现在文件看起来像 -

      文件名:0000.config

      files:
        "/opt/elasticbeanstalk/hooks/appdeploy/pre/02b_set_env_vars.sh":
          mode: "000755"
          owner: root
          group: root
          content: |
            #!/bin/bash
            EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
            $EB_SUPPORT_DIR/export_envvars
      

      【讨论】:

        猜你喜欢
        • 2016-02-26
        • 2020-11-27
        • 2014-11-29
        • 2018-07-25
        • 2020-11-25
        • 2018-03-26
        • 2017-06-01
        • 2013-12-10
        • 2016-01-11
        相关资源
        最近更新 更多