Helpers - компьютеры, интернет, программирование

Проблема с Bluemix на рельсах: экземпляр (индекс 0) не смог начать принимать соединения

Я пытаюсь развернуть небольшое приложение Rails в Bluemix. Локально работает нормально. Ошибка, которую я получаю:

Instance (index 0) failed to start accepting connections
2015-12-13T20:57:11.571-0800[API/2]OUTApp instance exited with guid
 68527a7d-ee7c-40a9-a500-0b44c01d267c payload: 
{"cc_partition"=>"default", 
"droplet"=>"68527a7d-ee7c-40a9-a500-0b44c01d267c", 
"version"=>"3b480d7d-3483-435b-bbfc-b4682a9994e2", 
"instance"=>"faed828f09364ac79a32503deaace288", "index"=>0, 
"reason"=>"CRASHED", "exit_status"=>-1, 
"exit_description"=>"failed to accept connections within health check timeout", 
"crash_timestamp"=>1450069031}

Все ответы, которые я нашел до сих пор, говорят, что это проблема с портом, а также когда я развертываю с помощью

cf push <myapp> --no-route

все идет нормально, то есть никаких сообщений об ошибках.

Я использую puma в качестве сервера, и мой Procfile (с таким написанием и он является корнем) имеет

web: bundle exec puma -p $PORT 

Даже при том, что Bluemix запускает пуму, но всегда с портом 3000. Даже когда я ставлю что-то вроде

web: bundle exec puma -p 1234

он начинается с порта 3000. Похоже, он игнорирует Procfile. Что я делаю не так?

Согласно приведенному ниже вопросу Джеффа, мой пакет сборки ruby ​​​​1.6.7, и это мой Gemfile:

source 'https://rubygems.org'

ruby "2.2.2"

gem 'rails', '4.2.1'

gem 'pg'
gem 'activerecord-postgresql-adapter'

gem 'cf-autoconfig', '~> 0.2.1'
gem 'rails_12factor'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read  more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more:    https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'

 # Access an IRB console on exception pages or by using <%= console %> in views
 gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

gem 'devise'

gem 'puma'

А это лог

2015-12-14T18:52:52.265-0800[STG/116]OUT-----> Uploading droplet (32M)
2015-12-14T18:53:00.626-0800[DEA/116]OUTStarting app instance (index 0) with guid 68527a7d-ee7c-40a9-a500-0b44c01d267c
2015-12-14T18:53:08.174-0800[App/0]OUT=> Booting Puma
2015-12-14T18:53:08.174-0800[App/0]OUT=> Rails 4.2.1 application starting in production on http://0.0.0.0:3000
2015-12-14T18:53:08.174-0800[App/0]OUT=> Run `rails server -h` for more startup options
2015-12-14T18:53:08.174-0800[App/0]OUT=> Ctrl-C to shutdown server
2015-12-14T18:53:09.038-0800[App/0]OUTPuma 2.15.3 starting...
2015-12-14T18:53:09.038-0800[App/0]OUT* Min threads: 0, max threads: 16
2015-12-14T18:53:09.038-0800[App/0]OUT* Environment: production
2015-12-14T18:53:09.038-0800[App/0]OUT* Listening on tcp://0.0.0.0:3000
2015-12-14T18:54:06.485-0800[DEA/116]ERRInstance (index 0) failed to start accepting connections
2015-12-14T18:54:06.488-0800[App/0]ERR
2015-12-14T18:54:06.487-0800[API/3]OUTApp instance exited with guid 68527a7d-ee7c-40a9-a500-0b44c01d267c payload: 
{"cc_partition"=>"default", "droplet"=>"68527a7d-ee7c-40a9-a500-0b44c01d267c", 
"version"=>"972ea1d8-aaf2-4fa8-a937-fad4024907f7",
"instance"=>"2c0a0d9d83a0442594596b42570ff3b8", "index"=>0, 
"reason"=>"CRASHED", "exit_status"=>-1, 
"exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=>1450148046}

Спасибо за вашу помощь!


  • Какой сборочный пакет ruby ​​вы используете? Как выглядит ваш Gemfile? Можете ли вы опубликовать еще несколько журналов, cf logs appname --recent. Не могли бы вы добавить эту информацию в свой пост? Также ознакомьтесь с этой записью в блоге, где вы найдете несколько советов по Rails, jeffsloyer.io/2015/03/05/. 14.12.2015

Ответы:


1

Итак, первый просмотр вы начинаете с порта 3000. Bluemix/Cloud Foundry назначает порт для запуска. Вам нужно следующее в файле manifest.yml. Однако вам нужно будет заменить информацию для вашего приложения. $PORT указывает Ruby на привязку к назначенному порту из Bluemix.

---
applications:
#swap out myapp-jbs for your own app name
- name: myapp-jbs
  memory: 1GB
  instances: 1
  path: .
  command: bundle exec rake db:setup && bundle exec rails s -p $PORT
  services:
  #swap out the below for your own
  #cf cs elephantsql turtle yourownname
    - postgres-myapp

Кроме того, нажмите на свое приложение с помощью следующей команды.

cf push -b https://github.com/cloudfoundry/ruby-buildpack.git
15.12.2015
  • Спасибо, Джефф, добавление файла манифеста помогло. Я думал, что в этом нет необходимости, поскольку в образце приложения Ruby его не было, но, по-видимому, он был. Для будущих читателей: я не добавлял свой сервис postgres в файл манифеста, так как он определен (для меня) в моем vcap_services, и мне также не нужно было включать пакет сборки в свой push. 16.12.2015
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..