使用Procfile在1 Heroku Dyno上链2后台bash命令

时间:2020-04-26 23:18:11

标签: bash heroku procfile

This Heroku Help page建议我可以在wait -n中运行多个后台运行的命令,然后运行Procfile。他们的例子:

web: puma -C config/puma.rb & sidekiq & wait -n

在我的示例中,我要运行的命令位于不同的目录中,所以我写道:

web: cd api/ && bundle exec puma -C config/puma.rb & cd .. && sh target/bin/worker & wait -n

问题

我的heroku应用程序崩溃。 heroku logs显示:

2020-04-26T22:50:37.104343+00:00 app[web.1]: sh: 0: Can't open target/bin/worker
2020-04-26T22:50:55.157670+00:00 heroku[web.1]: State changed from starting to crashed

但是,如果我先做heroku run bash,然后再做sh target/bin/worker,它运行良好。所有文件都在我期望的位置:

$ heroku run bash
Running bash on [redacted]... up, run.[redacted] (Free)
~ $ ls -al api/config/puma.rb
-rw------- 1 u37764 dyno 1579 Apr 26 22:43 api/config/puma.rb
~ $ ls -al target/bin/worker
-rw------- 1 u37764 dyno 11952 Apr 26 22:45 target/bin/worker

所以我认为我链接命令的方式可能不正确(例如,混合使用&&&)。我看到了this related bash question,但仍然找不到正确的语法。

这是什么?

我也尝试过...

  • puma需要从api/目录内部运行,例如web: puma -C api/config/puma.rb & sh target/bin/worker & wait -n也不起作用。)
  • web: sh start.sh,其中start.sh包含:
    #!/usr/bin/env sh
    cd api/
    bundle exec puma -C config/puma.rb &
    cd ..
    sh target/bin/worker &
    wait -n
    

0 个答案:

没有答案