在Heroku应用中同时运行Django和Node

3 投票
4 回答
2806 浏览
提问于 2025-04-17 23:20

我想在我的Heroku实例上同时运行一个Django应用和一个Node应用。

这是我的procfile:

web: python manage.py runserver 0.0.0.0:$PORT
web: node bin/node_modules/app.js

不过,正如我预料的那样,这似乎只运行了Node应用。有没有办法在同一个procfile中配置Heroku,让这两个程序都能运行,还是说我需要做其他的事情?(如果需要其他的,那具体要怎么做?我希望不必再开一个新的Heroku实例)。

另外,你知道的,因为Heroku的端口变量是完全内部的,我可以像这样传递node app.js port = $PORT,这个我不介意,但我还是希望能把它们都放在同一个地方运行。

4 个回答

0

正如我在评论中提到的,如果你想要两个网页处理程序,你需要把你的应用程序的进程管理器扩展到两个 dyno。

heroku ps:scale web=2
0

我还不能发评论,不过你试过这个吗:

web: python manage.py runserver 0.0.0.0:$PORT & node bin/node_modules/app.js
1

你只需要两个不同的进程名称:

webpy: python manage.py runserver 0.0.0.0:$PORT
webjs: node bin/node_modules/app.js

(假设每个进程都能正常工作)

3

我来得有点晚,不过Heroku刚刚发布了一篇博客,讲述了如何实现这个功能。

你可以在这里阅读,但简单来说,你需要使用这个自定义构建包,来设置一个子Procfile,具体如下:

Procfile:

web: bin/runsvdir-dyno

Procfile.web:

django: gunicorn path.to.wsgi:application --bind 127.0.0.1:$DJANGO_PORT
node: node server.js

撰写回答