【问题标题】:How to deploy separate 2 apps with 1 shared module on Heroku如何在 Heroku 上使用 1 个共享模块部署单独的 2 个应用程序
【发布时间】:2011-12-01 17:58:19
【问题描述】:

我想在 Heroku 上运行的应用程序包含 3 个项目:

  • HTML 前端 (www.myapp.com)
  • 一个 JSON API (api.myapp.com)
  • 和一个通用的实用程序类都共享

由于我使用不同的子域(并且无法合并 2 个前端),我必须创建 2 个单独的 Heroku 应用程序,因此我还需要 2 个 Procfile。对吧?

现在,我如何告诉 Heroku 使用哪个 Procfile?(假设所有内容都在一个存储库中)

PS:我正在使用 Scala、Play 和 sbt。

提前致谢!

【问题讨论】:

    标签: git heroku sbt


    【解决方案1】:

    如果您的 HTML 前端只是静态文件,那么您实际上应该将它放在 CDN 上,而不是 Heroku。如果你真的想在 Heroku 上运行两者,那么为 Heroku 上的每个应用程序创建一个 git 分支,然后将关联的分支推送到正确的 git 远程。如果你有一个名为“heroku-www”的 www 应用程序的 git 远程和一个名为“www”的 git 分支,那么你可以将它推送到 Heroku 上的主分支:

    git push heroku-www www:master
    

    【讨论】:

    • 感谢您的建议。不仅仅是静态文件,我正在使用播放框架。使用 2 个分支时,我将实用程序模块放在哪里?我查看了子模块,但它看起来过于复杂......
    • 你指的是本地repo依赖吗?
    • 没关系,我最终使用我的 Jenkins CI 服务器为本地存储库中的每个应用程序生成一个 Procfile,然后从那里推送它
    【解决方案2】:

    我考虑过使用分支或子模块,但我的工具(IntelliJ、Jenkins)太难用了。所以我在我的 CI 服务器中创建了 2 个工作;每个检查存储库,添加相应的 Procfile 并将其推送到 heroku:

    #!/bin/bash
    
    echo "#### Checkout repository"
    git clone -o -f git@github.com:myself/myrepo.git $WORKSPACE/source
    cd source/
    
    echo "#### create Procfile"
    echo "web: apps/app-api/target/start -api.port=\$PORT" > Procfile
    git add Procfile
    
    echo "#### commit locally"
    git commit -a -m "prepared for Heroku deployment"
    
    echo "#### push to heroku"
    git remote add repo-heroku git@heroku.com:myapp.git
    git push --force repo-heroku master && exit 0
    

    【讨论】:

      猜你喜欢
      • 2018-06-13
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2017-03-01
      • 2017-05-18
      • 2021-08-17
      相关资源
      最近更新 更多