Приложение Ruby (Sinatra), использующее mongodb, работает локально, но вылетает на Heroku - PullRequest
1 голос
/ 07 марта 2019

Я сделал простой API Ruby, используя Sinatra .Он получает доступ к mlabs mongodb, используя Mongoid.Если я запускаю docker-compose build, а затем docker-compose up, я могу получить доступ и использовать API на localhost.Однако, если я нажму и отпущу в Heroku, используя heroku container:push web и heroku container:release web, произойдет сбой через несколько секунд после запуска.Журналы Heroku не предоставляют много информации:

2019-03-07T17:40:33.307048+00:00 app[api]: Release v10 created by user ****@gmail.com
2019-03-07T17:40:33.307048+00:00 app[api]: Deployed web (4cd454c25995) by user user ****@gmail.com
2019-03-07T17:40:33.485337+00:00 heroku[web.1]: State changed from crashed to starting
2019-03-07T17:40:56.940967+00:00 heroku[web.1]: Starting process with command `irb`
2019-03-07T17:40:59.715826+00:00 heroku[web.1]: State changed from starting to crashed
2019-03-07T17:40:59.696826+00:00 heroku[web.1]: Process exited with status 0
2019-03-07T17:40:59.630419+00:00 app[web.1]: Switch to inspect mode.
2019-03-07T17:40:59.631325+00:00 app[web.1]: 

Мой Dockerfile:

FROM ruby:2.5.3

RUN apt-get update -qq && apt-get install -y build-essential
RUN gem install bundler

ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ADD Gemfile* $APP_HOME/
ADD mongoid.config $APP_HOME/
RUN bundle install

ADD . $APP_HOME

Мой docker-compose.yml:

version: "2"
services:
  web:
    build: .
    command: bundle exec ruby server.rb
    ports:
      - "80:4567"

Моя конфигурация Mongoid(mongoid.config):

development:
  clients:
    default:
      uri: mongodb://myUsername:myPassword@hostAddress:hostPort/databaseName

Где myUsername, myPassword, hostAddress, hostPort и databaseName отключены для фактических значений.

В моем файле ruby ​​я загружаю конфигурацию Mongoid сMongoid.load! "mongoid.config".

Мой Gemfile, для полноты:

source 'https://rubygems.org'

gem 'sinatra'
gem 'mongoid'
gem 'sinatra-contrib'

Кто-нибудь имеет представление о том, как я могу узнать, что вызывает сбой?

...