Heroku:Docker化Rails API部署

我有这个使用Postgresql,Sidekiq(因此Redis)和Puma服务器的Rails 4 API。

我需要把它部署到Heroku,并且我在成功的doc之后成功地部署了它。 但是,首先我不知道为什么它告诉我,有没有networking进程运行。

2010-10-06T21:51:37-07:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes= 

所以我不得不手动打开dyno。

自从那个heroku日志只是不断告诉我,应用程序崩溃

 2010-10-06T21:51:12-07:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes= 

我之前做过的其他教程是:

设置config/puma.rb文件

 workers Integer(ENV['WEB_CONCURRENCY'] || 2) threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5) threads threads_count, threads_count preload_app! rackup DefaultRackup port ENV['PORT'] || 3000 environment ENV['RACK_ENV'] || 'development' on_worker_boot do # Worker specific setup for Rails 4.1+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot ActiveRecord::Base.establish_connection end 

设置Procfile

 web: bundle exec puma -C config/puma.rb 

设置app.json

 { "name": "Cool name", "description": "Really meaningful description", "image": "heroku/ruby", "addons": [ "heroku-postgresql" ] } 

docker-compose.yml

 web: build: . command: puma ports: - "9292:9292" links: - db - redis volumes: - .:/app_name stdin_open: true tty: true sidekiq: build: . volumes: - .:/app_name command: bundle exec sidekiq links: - db - redis env_file: - .env db: image: postgres redis: image: redis 

.env文件

 REDIS_HOST=redis://redis:6379/0 

那么谁能告诉我什么是我的设置,它成功部署到Heroku,但无法运行呢?

目前,Heroku的基于容器的方法与Docker Compose工作stream程完全不匹配。

你的Dockerfile是什么样的? 在使用Docker进行部署时,Procfile完全没有使用,所以必须在Dockerfile中使用CMD添加start命令。

 CMD bundle exec puma -C config/puma.rb 

这也意味着对于运行Sidekiq,您需要使用不同的CMD构build一个单独的Docker镜像。 您需要在另一个(子)目录中使用第二个Dockerfile来完成Heroku的CLI。