我有这个使用Postgresql,Sidekiq(以及Redis)和Puma服务器的Rails 4 API。
我需要将它部署到Heroku,然后按照doc成功部署它。但首先我不知道为什么它告诉我没有运行Web进程。
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日志只是告诉我App崩溃了
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
所以有人可以告诉我什么是wronf我的设置成功部署到Heroku但是无论如何都无法在那里运行?
答案 0 :(得分:1)
目前,Heroku的基于容器的方法与Docker Compose工作流程并不完全匹配。
您的Dockerfile是什么样的?使用Docker进行部署时,根本不使用Procfile,因此必须在Dockerfile中使用CMD
添加start命令。
CMD bundle exec puma -C config/puma.rb
这也意味着要运行Sidekiq,您需要使用不同的CMD
构建单独的Docker镜像。您需要在另一个(子)目录中使用第二个Dockerfile,以便使用Heroku的CLI实现此目的。