2017-01-04 2 views
5

एक गिट रेपो के भीतर, मेरे पास दो अलग-अलग एप्लिकेशन (वेब ​​सर्वर और एपीआई सर्वर) हैं।एक ही गिट रेपो से दो अलग-अलग हेरोकू ऐप्स को तैनात करें

मैं प्रत्येक एप्लिकेशन को अपने हीरोोक ऐप में कैसे तैनात कर सकता हूं?

(तो वहाँ 2 Heroku क्षुधा, वेब सर्वर के लिए एक और एपीआई सर्वर के लिए कर रहे हैं) (डुप्लीकेट के रूप में अंकन से पहले)

नोट: इस के समान कई सवाल कर रहे हैं। पर तैनात करने के साथ सबसे अधिक सौदा ऐप दो हेरोकू ऐप्स - आमतौर पर स्टेजिंग बनाम उत्पादन के उद्देश्य के लिए। मैं दो ऐप्स दो हेरोकू ऐप्स पर तैनात करना चाहता हूं। (Question about staging vs prod)

उत्तर

7

आपके प्रश्न की मेरी समझ यह है कि आपके पास एक गिट भंडार है, जिसमें दो पूरी तरह अलग कार्यक्रम हैं: एक एपीआई सर्वर, और एक वेब सर्वर।

  1. अपनी परियोजना फ़ोल्डर में जाएँ:

    इसे ध्यान में धारणा के साथ, यहाँ आप कदम-दर-कदम है, के लिए करना चाहेंगे क्या है।

  2. अपनी परियोजना की जड़ पर Procfile परिभाषित करें। यह हेरोोकू को आपके वेब सर्वर और आपके एपीआई सर्वर को चलाने का तरीका बताएगा। - एक web कहा जाता है और एक api कहा जाता रहा Heroku dynos के दो प्रकार को परिभाषित कर रहा हूँ:

    web: node web/index.js 
    api: node api/index.js 
    
    ऊपर

    मेरे उदाहरण में:

यहां अपने Procfile देखने के लिए (एक उदाहरण) चाहते हो सकता है है । प्रत्येक के लिए, आपको हेरोोकू को उचित सर्वर शुरू करने के लिए चलाने के लिए क्या आदेश देना होगा। इस उदाहरण में, मैं अपनी वेबसाइट शुरू करने के लिए node web/index.js चलाऊंगा, और मेरी API सेवा शुरू करने के लिए node api/index.js चलाऊंगा।

  1. दो नए हेरोोक एप्लिकेशन बनाएं। आप heroku create <desired-app-name> --remote <desired-app-name> कई बार चलकर ऐसा कर सकते हैं। नोट: --remote ध्वज हेरोोकू को आपके प्रत्येक एप्लिकेशन के लिए एक ही रेपो में गिट रिमोट बनाने के लिए बताएगा।

  2. अगला, आपको एक हीरोोक ऐप पर अपना वास्तविक वेब एप्लिकेशन चलाने और हेरोोकू ऐप पर अपनी एपीआई सेवा चलाने के लिए हेरोोकू को बताना होगा। आप Heroku CLI का उपयोग करके ऐसा कर सकते हैं:

    $ heroku ps:scale web=1 --remote webserver-app-name 
    $ heroku ps:scale api=1 --remote apiserver-app-name 
    

इन आदेशों करेंगे:

  • भागो अपने वेबसर्वर Heroku अनुप्रयोग के लिए एक वेब dyno।
  • अपने एपिसर्वर हेरोोकू ऐप के लिए एक एकल एपीआई डायनो चलाएं।

आप ऊपर देख सकते हैं, ps:scale आदेश का उपयोग कर आप नियंत्रित कर सकते हैं क्या आदेशों के प्रकार Heroku अपने Procfile से चलेंगे, और कैसे प्रत्येक के कई उदाहरणों आप चाहें तो है।

उम्मीद है कि इससे मदद मिलती है!

+0

धन्यवाद rdegges, मैं आज इसे आजमा दूंगा। प्रश्न हालांकि - क्या मैं अपनी मास्टर शाखा को प्रत्येक अलग-अलग heroku ऐप पर धक्का देने के लिए 'गिट पुश हेरोकू-एपी मास्टर' और 'गिट पुश हेरोकू-वेब मास्टर' करूँगा? –

+1

आह, जब आप अपनी मास्ट शाखा को धक्का देना चाहते हैं तो आप करेंगे: 'गिट पुश हेरोकू-एपीआई मास्टर; गिट पुश हेरोकू-वेब मास्टर; 'दोनों परियोजनाओं को इसे तैनात करने के लिए =) सामान्य' गिट पुश हेरोकू मास्टर 'के बजाय आप ऐसा करेंगे, क्योंकि' हेरोकू 'रिमोट के बजाय अब आपके पास दो रिमोट हैं:' Heroku-web 'और 'Heroku-api'। उम्मीद है कि समझ में आता है! – rdegges

+0

यह बहुत अच्छा है, लेकिन आपको किसी भी तरह निर्भरता स्थापित करने की आवश्यकता है। मैंने उप-फ़ोल्डर्स से अपने ऐप्स चलाने के लिए स्क्रिप्ट में 'npm install' डालकर ऐसा किया था। सही नहीं है, लेकिन मुझे नहीं पता कि इसे धक्का पर कैसे किया जाए। –

0

दुर्भाग्य से solution suggested by rdegges दुर्भाग्यवश काम नहीं करता है। देखें:

वेब प्रक्रिया प्रकार विशेष है क्योंकि यह एकमात्र प्रक्रिया प्रकार है जो हरोकू के राउटर से HTTP ट्रैफ़िक प्राप्त करेगा। अन्य प्रक्रिया प्रकार मनमाने ढंग से नामित किया जा सकता है।

Heroku documentation से। तो आप वेब अनुप्रयोगों को उजागर करते हुए एक प्रसंस्करण में api और web नहीं कर पाएंगे।

मेरा मानना ​​है कि इस से निपटने के लिए सही तरीका यह buildpack Heroku टीम द्वारा प्रदान की उपयोग करने के लिए है: Heroku Multi Procfile buildpack:

कल्पना कीजिए कि आप एक भी कोड बेस है, जो इसे भीतर कुछ अलग अलग अनुप्रयोगों है है ... या कम से कम विभिन्न अनुप्रयोगों को चलाने की क्षमता। या, हो सकता है कि आप अपने मोनो रेपो के साथ Google हो?

किसी भी मामले में, आप इसे Heroku पर कैसे प्रबंधित करते हैं? आप नहीं करते हेरोकू एप्लिकेशन एक एप्लिकेशन को एक रेपो मानते हैं।

मल्टी प्रोफाइल बिल्डपैक दर्ज करें, जहां प्रत्येक ऐप को प्रोफाइल मिल जाता है!

संबंधित मुद्दे