1

我有一個Rails 4應用程序使用ruby 2.3,我想使用AWS Ebs進行部署。我將db連接指向一個現有的數據庫,我正在使用cli來初始化和創建。當我到了創造的部分我不斷收到一個錯誤,指出消息:Rails應用程序無法部署在彈性beanstalk上

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上找到的教程以不同的方式重寫這個配置文件。

對我在做什麼錯的任何想法都有幫助,因爲我目前處於虧損狀態。

回答

0

我發現我的問題的答案是我已經添加了.ebextensions到我的.gitignore。在部署的早期階段,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 
2

將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" 
+1

同樣的問題,當我檢查我注意到這個日誌: '++出口RAILS_SKIP_MIGRATIONS = FALSE' '++ RAILS_SKIP_MIGRATIONS = FALSE' – WhyAyala

+1

嗯,這是尷尬。在檢查我最近上傳的我的應用程序的zip後,我發現沒有包含.ebextensions。當我開始研究它時,我認爲將目錄添加到.gitignore是相當必要的,這與.elasticbeanstalk目錄相同。當我運行'eb create'時,一切正常 – WhyAyala

相關問題