Я сделал простой 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'
Кто-нибудь имеет представление о том, как я могу узнать, что вызывает сбой?