如何在Heroku上部署共享模块的两个独立应用程序

3
我想在Heroku上运行的应用程序由以下三个部分组成:
  • 一个HTML前端(www.myapp.com
  • 一个JSON API(api.myapp.com
  • 和一个共用的实用类share
由于我使用不同的子域名(而且我不能合并这两个前端),所以我必须创建2个独立的Heroku应用程序,因此我还需要2个Procfiles。对吧? 现在,我该如何告诉Heroku使用哪个Procfile?(假设所有内容都在一个存储库中)
PS:我正在使用Scala、Play和sbt。
提前致谢!
2个回答

3
如果你的HTML前端只是静态文件,那么你应该将其放在CDN上,而不是放在Heroku上。如果你真的想在Heroku上运行两个应用程序,则应为每个应用程序在Heroku上创建一个git分支,然后将关联的分支推送到正确的git远程。如果你有一个名为“heroku-www”的www应用程序的git远程,并且有一个名为“www”的git分支,则可以通过以下方式将其推送到Heroku的主分支:
git push heroku-www www:master

谢谢建议。我不仅使用静态文件,还使用Play框架。在使用2个分支时,我应该把实用模块放在哪里?我看了一下子模块,但它看起来过于复杂了... - stephanos
你是指本地仓库依赖吗? - James Ward
没关系,我最终使用我的Jenkins CI服务器为本地存储库中的每个应用程序生成了一个Procfile,并从那里推送它。 - stephanos

1

我曾考虑使用分支或子模块,但是使用我的工具(IntelliJ、Jenkins)太困难了。因此,我在我的 CI 服务器上创建了两个作业;每个作业都检出存储库,添加相应的 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

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