【问题标题】:Foreman: Use different Procfile in development and productionForeman:在开发和生产中使用不同的 Procfile
【发布时间】:2012-07-20 12:34:38
【问题描述】:

我有一个自制的 Sinatra 应用程序,我打算使用 Heroku 来托管它。

我在开发中使用工头和霰弹枪,带有以下 Procfile:

web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV

它适用于开发和生产。但问题是,我不想在生产中使用霰弹枪,因为它太慢了。

我们可以为 dev 和 prod 使用单独的 Procfile 配置吗?

【问题讨论】:

    标签: heroku sinatra rack foreman shotgun


    【解决方案1】:

    您可以使用两个Procfiles(例如ProcfileProcfile.dev)并使用foremans -f option 选择一个不同的用于开发:

    在开发中(Procfile.dev 包含您的 shotgun 网络进程):

    foreman start -f Procfile.dev
    

    在生产中,foreman start 将使用普通的Procfile

    或者,您可以使用脚本在您的应用中创建一个bin 目录,以根据$RACK_ENV 启动适当的网络服务器(我在comment made by the creator of Foreman 中找到了一个想法,因此值得考虑)。

    【讨论】:

    • 您是否会偶然知道是否有办法告诉 Heroku 运行不同的 Procfile?
    • @darko 不,没有办法为 Heroku 指定一个自定义 Procfile 来运行。它将始终使用名为 Procfile 的那个。
    • 要避免-f Procfile.dev 参数,您可以创建一个.foreman 文件,其中包含procfile: Procfile.dev
    • @bgentry 太可怕了,是故意的吗?
    • 对于任何碰巧使用 node-foreman 的人,出于某种奇怪的原因,标志是 -j 而不是 -f。
    【解决方案2】:

    在我看来,@sharagoz 对所选答案的评论是允许您在不添加其他参数的情况下仍使用 foreman start 并将您的 Procfile 与 Heroku 分开的最佳选择。

    要避免使用 -f Procfile.dev 参数,您可以创建一个包含 procfile: Procfile.dev 的 .foreman 文件 – Sharagoz

    在我的应用程序根目录中,我创建了一个 .foreman 文件,正如评论所述

    .工头

    procfile: Procfile.dev
    

    过程文件

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

    Procfile.dev

    web: bundle exec puma -C config/puma.rb
    webpacker: ./bin/webpack-dev-server
    

    【讨论】:

      【解决方案3】:

      这是一种使用 Procfile 和环境变量来处理它的方法。我在 Heroku 上使用它。

      设置你的环境:

      export WEB_START_COMMAND='node index.js'
      export WORKER_START_COMMAND='node worker.js'
      

      Procfile:

      web: eval '$WEB_START_COMMAND'
      worker: eval '$WORKER_START_COMMAND'
      

      在您的服务器和开发环境中导出不同的启动命令。

      【讨论】:

      • 当命令中有$PORT 时,这似乎不起作用
      • 如果您希望每个环境有一组不同的进程,这会有些限制。 @sharagoz 解决方案更灵活。
      • 就我而言,这是一个非常好的解决方案,简单且有效。
      【解决方案4】:

      对于那些仍在寻找这个的人,根据docs foreman 不再需要了。您可以简单地使用:

      heroku local -f Procfile.dev

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多