使用Procfile部署到dokku会干扰'dokku run'命令

4

我最近添加了 dokku-shoreman 插件和一个 Procfile,这样在部署时我的应用程序可以同时运行工作进程和 Web 进程。它看起来像这样:

web: bundle exec rails server -p $PORT
worker:  bundle exec rake jobs:work

然而,现在当我使用dokku run <app> <cmd>,例如...rake db:migrate时,会启动服务器和工作进程
目前我知道的唯一运行工作进程的方法是使用Procfile。手动部署后启动它并不是什么大问题 - 只是我不知道该如何操作。
虽然理想情况下,Procfiledokku run都应该正常工作。
1个回答

3

更新2:现在Dokku支持这个http://dokku.viewdocs.io/dokku/deployment/process-management/

更新:首先检查dokku-alt(不再维护)- 这是我转而使用的东西。

这是dokku的一个已知问题(known issue)

这是问题讨论中详细说明的临时解决方案,对我有效:

  1. 将实际的Procfile重命名为Procfile.real
  2. 创建一个新的Procfile,内容如下:

    web: bundle exec foreman start -f Procfile.real

  3. Gemfile中添加gem 'foreman'作为依赖项
  4. 运行bundle install
  5. 提交Procfile*Gemfile*
  6. 推送

有没有想法如何在非 Ruby 应用中使用这个临时解决方案?我正在使用 Python,因此没有 Gemfile :/ - bfontaine
1
非常抱歉,我真的不知道。Github问题讨论仅适用于Rails应用程序。我建议在此处发布一个带有适当标签的Python“版本”问题或在此处添加问题:https://github.com/progrium/dokku/issues - Charlie Egan
1
请注意,dokku-alt项目不再得到积极维护。 - PiKey
Dokku现在直接支持Procfiles。使用shoreman或手动通过foreman执行您的Procfile不是一个好的做法,请使用我们的常规Procfile支持,详细文档请参考这里 - Jose Diaz-Gonzalez
@JoseDiaz-Gonzalez 谢谢 - 我已经将其作为答案顶部的更新添加了。 - Charlie Egan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接