2015-06-08 60 views
0

我有一個Heroku的障礙,我還沒有想出最好的解決方法,但也許我錯過了一些東西。如何用python(或ruby)和nodejs做heroku?

在我解釋更多,讓我先說,我所熟悉的Heroku的:

https://github.com/heroku/heroku-buildpack-multi.git 

事實上我有一個.buildpacks文件看起來像:

https://github.com/heroku/heroku-buildpack-nodejs.git 
https://github.com/heroku/heroku-buildpack-python.git 

TL; DR我的問題是,我如何告訴heroku我的nodejs應用程序的基本目錄不在根目錄中?

如何告訴Heroku應用從我的應用的/ dir1/dir2/ui開始的nodejs buildpack並將該目錄用作基目錄?但對於Python使用/ dir1作爲基本目錄?

總的想法是,我將運行某種Python WSGI服務器(無論是Flask還是Django ......或者甚至是Ruby on Rails)。但是我將使用一套節點包來構建我的前端內容(scss文件,JS文件,HTML文件)。

不止一次我使用某種Python starter/seed項目開始一個項目,該項目將生成一個簡單的骨架服務器,包含路由和一個簡單的Angular前端。

然後,我會盡快使用像yeoman這樣的東西來生成一個更豐富和更成熟的前端,它使用節點和吞嚥來做各種方便的前端魔術。

然後,我將yeoman UI項目結構合併到我的python項目中,以使用來自Python和node/npm/gulp/bower/Angular的最佳實踐來獲得完整項目。

合併我一般就會有一個項目結構,看起來像(一些東西,不再贅述)後:

.buildpacks 
Procfile 
env/  # python virtual environment (not actually checked in to git) 
heroku.sh 
myproject_dir 
    models/ 
    views/ 
    ui/ 
     # python templates (eg: *.jinja.html files). i'll predominantly 
     # be using angular and partials, but I don't totally want to 
     # give up all server-side templates. SPAs, in reality are not 
     # usually truly one single-page, but maybe 3 or 4 very rich 
     # pages 
     templates/ 
      index.jinja.html # my main html file 
     # static/ is where the yeoman project really merges in to 
     # the python project 
     static/ 
      assets/ 
       images/ 
        foo.jpg 
      styles/ 
       app.css 
      partials/ 
       app/ 
        app.html 
      src/ 
       app/ 
        app.js 
      test/ 
       test1.js 
     # gulpfile.js and package.json live in the ui directory (not 
     # in the static directory), because I actually do want gulp to 
     # do some processing on my jinja server-side template files 
     gulpfile.js 
     package.json 
     bower.json 
     node_modules/ 
     bower_components/ 
manage.py # python top-level for managing script for various things 
requirements.txt # python package dependencies 
runtime.txt 

而且我們現在已經在我的問題與Heroku的到來。

我有2個構建環境,python和node/gulp。但我想告訴heroku我的節點環境從ui /目錄開始。

但我還沒有想出如何做到這一點。這是可以實現的嗎?

我要指出,這個問題的Heroku非常有關:https://github.com/heroku/heroku-buildpack-nodejs/issues/230

目前,它看起來像如果我有我的Python腳本manage.py揭開序幕一飲而盡建立,將無法找到節點和故宮。這可能會導致我的manage.py腳本實際上自行獲取並安裝node/npm,但這看起來很瘋狂。

回答

0

使用你在heroku上描述的設置聽起來對於buildpack系統來說聽起來很複雜,並且可能會涉及分叉標準heroku包並調整他們的bash腳本。當我通過R + Python集成完成時,這並不好玩,但你可以用Vagrant來反覆嘗試。

您可能會發現使用Heroku的Docker support更容易。這使您可以控制您的構建環境在各個級別的工作方式,並且更好地貼近我的大腦。它仍然會涉及迭代調整以使構建恰到好處。

+0

謝謝!很有幫助。我沒有想過Vagrant,只是沒有意識到他們有一個圖像,調試我的buildpack一直是一個真正的瑣事。現在我已經將heroku的python和nodejs構建包合併爲一個了,在Python之後運行nodejs。流浪者將會提供幫助。 Docker也很有趣。我從來沒有用過它,但聽說過它。事實上,Docker可能是Heroku未來的方式。儘管我從來沒有用過它,但我認爲我更喜歡在buildpack文件上使用Dockerfile。關於buildpack文件和它們運行的​​環境文件太多沒有文檔。 – lostdorje

+0

祝你好運! – bwarren2