当我将应用程序部署到他们的服务时,AWS Elastic Beanstalk永远不会接受我的应用程序。我试图通过阅读日志解决所有问题,似乎没有任何工作。我的开发IDE是Rubymine / ruby 2.4.5 / Rails 5.2.0 / Windows 10 Pro x64 / Bundler verion 1.16.4。我收到的错误如下。如何将我的应用程序成功部署到AWS Elastic Beanstalk?在开发过程中,我对启动应用程序没有任何问题。我尝试使用尽可能少的依赖项启动应用程序。我清除了资产缓存。我删除了不必要的文件似乎没有什么能满足Elastic Beanstalk。 (这是我第一次使用该服务)
一个注意事项:我正在为这个特定的应用程序使用actioncable
database.yml的
production:
adapter: postgresql
encoding: utf8
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
cable.yml
development:
adapter: async
test:
adapter: async
production:
adapter: postgresql
url: <%= ENV["REDIS_URL"] %>
channel_prefix: <%= ENV['CABLE_CHANNEL_PREFIX'] %>
宝石
ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]
错误日志:
-------------------------------------
/var/log/eb-commandprocessor.log
-------------------------------------
gem 'loofah-activerecord'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'bootsnap', '>= 1.1.0', require: false
gem 'rails', '5.2.0' # '~>5.1.1' 5.1.6
# Use postgresql as the database for Active Record
#gem 'derailed_benchmarks', group: :development
gem 'pg', '~> 1.1', '>= 1.1.4'
gem 'puma', '~> 2.16'
# Use SCSS for stylesheets
gem 'sass-rails'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '~> 4.1', '>= 4.1.20'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
# gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
gem 'redis'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~>3.1.11', platforms: [:ruby, :x64_mingw, :mingw]
#gem 'bcrypt', git: 'https://github.com/codahale/bcrypt-ruby.git', require: 'bcrypt'
gem 'bcrypt', '~> 3.1', '>= 3.1.12'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :test do
gem 'capybara', '~> 2.15', '>= 2.15.4'
gem 'factory_bot_rails', '~> 4.0'
gem 'guard-rspec'
gem 'rspec-rails', '~> 3.4', '>= 3.4.2'
gem 'rubocop-rspec'
gem 'stripe-ruby-mock', '~> 2.5.4', require: 'stripe_mock'
gem 'webmock'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
platform :mswin, :mingw, :x64_mingw do
gem 'tzinfo-data'
gem 'byebug', platforms: %i[mri mingw x64_mingw], group: :development
end
gem 'rubocop', require: false
+ '[' -d /var/app/ondeck/vendor/cache ']'
+ bundle install --deployment --local
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root users on this machine.
Your bundle only supports platforms ["x64-mingw32"] but your local platforms are
["ruby", "x86_64-linux"], and there's no compatible match between those two lists. (Executor::NonZeroExitStatus)
[2019-03-03T05:36:01.585Z] ERROR [27678] : Command CMD-AppDeploy failed!
[2019-03-03T05:36:01.586Z] INFO [27678] : Command processor returning results:
{"status":"FAILURE","api_version":"1.0","results":[{"status":"FAILURE","msg":"(TRUNCATED)...ling your bundle as root will break this application for all non-root\nusers on this machine.\nYour bundle only supports platforms [\"x64-mingw32\"] but your local platforms are\n[\"ruby\", \"x86_64-linux\"], and there's no compatible match between those two\nlists. \nHook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI","returncode":16,"events":[]}],"truncated":"true"}
[2019-03-03T05:39:21.557Z] DEBUG [27906] : Reading config file: /etc/elasticbeanstalk/.aws-eb-stack.properties
[2019-03-03T05:39:21.557Z] DEBUG [27906] : Checking if the command processor should execute...
[2019-03-03T05:39:21.559Z] DEBUG [27906] : Checking whether the command is applicable to instance (i-02c427cad88fc3a3e)..
[2019-03-03T05:39:21.559Z] INFO [27906] : Command is applicable to this instance (i-02c427cad88fc3a3e)..
[2019-03-03T05:39:21.559Z] DEBUG [27906] : Checking if the received command stage is valid..
[2019-03-03T05:39:21.559Z] INFO [27906] : No stage_num in command. Valid stage..
[2019-03-03T05:39:21.560Z] INFO [27906] : Received command CMD-TailLogs: {"execution_data"=>"*", "instance_ids"=>["i-02c43eeewfefwfw"], "data"=>"betetet--reeetetetete5", "command_name"=>"CMD-TailLogs", "api_version"=>"1.0", "resource_name"=>"AWSEBAutoScalingGroup", "request_id"=>"b100000-2222-2222-2222-22222222"}
[2019-03-03T05:39:21.560Z] INFO [27906] : Command processor should execute command.
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Storing current stage..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Stage_num does not exist. Not saving null stage. Returning..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Reading config file: /etc/elasticbeanstalk/.aws-eb-stack.properties
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Retrieving metadata for key: AWS::ElasticBeanstalk::Ext||_ContainerConfigFileContent||commands..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Retrieving metadata for key: AWS::ElasticBeanstalk::Ext||_API||_Commands..
[2019-03-03T05:39:21.561Z] INFO [27906] : Found enabled addons:
["logstreaming", "logpublish"].
[2019-03-03T05:39:21.562Z] INFO [27906] : Updating Command definition of addon logstreaming.
[2019-03-03T05:39:21.562Z] INFO [27906] : Updating Command definition of addon logpublish.
[2019-03-03T05:39:21.562Z] DEBUG [27906] : Loaded definition of Command CMD-TailLogs.
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing CMD-TailLogs
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing command: CMD-TailLogs...
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing command CMD-TailLogs activities...
[2019-03-03T05:39:21.562Z] DEBUG [27906] : Setting environment variables..
[2019-03-03T05:39:21.562Z] INFO [27906] : Running AddonsBefore for command CMD-TailLogs...
[2019-03-03T05:39:21.563Z] DEBUG [27906] : Running stages of Command CMD-TailLogs from stage 0 to stage 0...
[2019-03-03T05:39:21.563Z] INFO [27906] : Running stage 0 of command CMD-TailLogs...
[2019-03-03T05:39:21.563Z] DEBUG [27906] : Loaded 1 actions for stage 0.
[2019-03-03T05:39:21.563Z] INFO [27906] : Running 1 of 1 actions: TailLogs...
您的Gemfile.lock
是在Windows(x64-mingw32
平台)上生成的,包含与Linux不兼容的宝石版本。但亚马逊只支持ruby
或x86_64-linux
平台。
Your bundle only supports platforms ["x64-mingw32"] but your local platforms are
["ruby", "x86_64-linux"], and there's no compatible match between those two lists.
这基本上意味着你根本无法在Linux机器(或Mac)上使用当前的Gemfile.lock
。您需要在该操作系统上运行bundle update
(而不是bundle install
),以允许bundler找到一组新的匹配宝石版本。
当然,这有点冒险,因为您可能在生产系统上运行其他gem版本而不是在开发环境中运行,因此我建议在部署之前实际切换到新版本之前再次运行测试。
当您计划在常规基础上使用Ruby on Rails应用程序时,我建议您切换到Linux作为本地开发环境。虚拟机中的Linux或通过docker镜像可能是您的另一种选择。
虽然您可能应该使用某种虚拟机来为生产环境开发ruby / rails,但现在尝试在gemfile中更改它:
group :development do
gem 'byebug'
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
gem 'web-console', '>= 3.3.0'
gem 'rubocop', require: false
end
您可以删除它来测试您的部署:
platform :mswin, :mingw, :x64_mingw do
gem 'tzinfo-data'
gem 'byebug', platforms: %i[mri mingw x64_mingw], group: :development
end
你应该只需要在开发中使用rubocop,所以也可以将它移到开发块中。
然后跑
bundle install
然后再次尝试部署