我有一个可以以两种模式部署的存储库:一个是前端 Web 应用程序,另一个是全天候运行的数据处理过程。
该应用程序在 Django 上运行并连接到 Postgres 数据库。
由于架构原因(我不会深入讨论),我想将应用程序以前端模式部署为一个 Heroku 应用程序,并将相同的应用程序(即相同的 git repo)以数据代理模式部署为另一个 Heroku 应用程序。
两个应用程序将共享相同的 Postgres 连接字符串,因此数据代理将向前端应用程序提供数据。
是否可以在一个 repo 中维护两个单独的 Procfile?这将导致 3 个适当的 dynos 以前端模式启动,并将在另一种模式下完全启动另一个进程。
答案1
你一定需要两个单独的 Procfile 吗?听起来你可以简单地使用网络测力计对于前端和一个工人测功机用于后台数据操作。Heroku 直接支持此功能;进程类型将在一个 Procfile 中定义:
web: gunicorn hellodjango.wsgi
worker: <whatever command launches your worker>
例如,将一个应用程序的多个模块(来自一个 Git 存储库)作为不同类型的 dynos 启动,这绝对没有问题。
答案2
你可以使用我的 dokku 插件(https://github.com/sibeliusseraphini/dokku-custom-procfile-plugin)
您只需要使用 dokku config:set $APP (或 heroku config:set $APP PROCFILE="...")设置 PROCFILE="web: npm start" 环境变量