2014-07-18 13 views
11

पर आर्टिसन के लिए रास्ता सुझाएं मुझे अभी तक मेरे डॉकर आधारित स्थानीय देव पर्यावरण में लैरवेल आर्टिसन कमांड चलाने के लिए एक सुरुचिपूर्ण और कुशल तरीका नहीं मिला है।डॉकर

कोई भी माइग्रेशन जैसी चीजों को करने के लिए अनुशंसित या "उचित" तरीका सुझा सकता है?

या, क्या किसी को ऐसा करने का एक साफ तरीका मिला है? आदर्श रूप से उदाहरण या सुझाव के साथ।

चीज़ें है कि मैं पर विचार किया है:

  • एक नया कंटेनर ssh के साथ (एक ही मात्रा और डाटाबेस लिंक साझा), बस आदेशों को चलाने के लिए (बुरा लगता है)।
  • पर्यवेक्षक में हैक जो तब लाइव (आदर्श नहीं) पर चल रहे हैं।
  • संपादन डीबी कॉन्फ़िगरेशन, या "होस्ट" वातावरण में हैक करने की कोशिश कर रहा है, ताकि कम से कम माइग्रेट जैसी चीजें मेजबान से चल सकें।
  • चीजों को चलाने के लिए वेब फ्रंट सिरों का निर्माण (वास्तव में बुरा)।
  • चीजों के लिए "सिग्नल" बनाने की कोशिश कर रहा है।

मुझे अभी भी डॉकर के आसपास अपना सिर मिल रहा है और यह सब-कंटेनर-सब कुछ दृष्टिकोण है।

मुझे लगता है कि मैं कूल-डेव-ऑप्स सामान को संतुलित करना चाहता हूं, क्यों-मैं-ज़रूरत-एक-नकली-सर्वर-बस-इसे-काम-पहले से ही।

मैं अपने देव कार्यप्रवाह के लिए यह करने के लिए प्रतिबद्ध करने में खुशी होगी, लेकिन यह कुछ निश्चित परिस्थितियों में उपयोग करने के लिए, इस तरह अजीब बनने के लिए लगता है ...

कोई सुझाव और विचारों का स्वागत है। सबको शुक्रीया।

+0

मैं एक बना लिया है एसएसएच के बिना एनपीएम, बोवर, ग्रंट के साथ-साथ कारीगर और संगीतकार जैसे कुछ अलग-अलग औजारों का उपयोग करने के बारे में पोस्ट करें, उचित तरीका [यहां] (https://medium.com/@tomsowerby/proper-provisioning-with-docker- c412211b97bb)। मैं एक अलग डेटा वॉल्यूम और अलग PHP कंटेनर के उचित सेटअप के तहत अपने ऐप की सेवा के लिए डायलन ब्लॉग की भी सिफारिश करता हूं। – tomsowerby

उत्तर

8

डॉकर के बारे में सबसे अच्छा अभ्यास प्रत्येक प्रक्रिया को अपने स्वयं के कंटेनर के अंदर चलाने के लिए है। इसलिए, artisan आदेश चलाने का आदर्श तरीका विशेष रूप से इस उद्देश्य के लिए कंटेनर बनाने के लिए एक छवि है।

मैंने एक ऐसी छवि बनाई है जिसे डॉकर हब dylanlindgren/docker-laravel-artisan से खींचा जा सकता है और यह वास्तव में अच्छी तरह से काम करता है। यह GitHub पर भी है यदि आप इसके पीछे Dockerfile पर एक नज़र डालना चाहते हैं।

मैंने अभी भी blog post लिखा है जिस तरह से ये सभी पृथक कंटेनर एक साथ फिट बैठते हैं।

+0

हां! मैं एक ही निष्कर्ष पर आया था। मैंने डेटाबेस कनेक्शन को थोड़ा दर्द पाया, विशेष रूप से इतने सारे कनेक्शन प्रकारों के साथ एक आकार-फिट-सभी डॉकरफ़ाइल/कंटेनर होना मुश्किल है। अच्छा ब्लॉग पोस्ट हालांकि, मैं इसे किसी भी व्यक्ति को अनुशंसा करता हूं जो इस पृष्ठ पर ठोकर खाए। – tomsowerby

1

वहाँ संभावनाओं की एक जोड़ी रहे हैं ...

  1. फ़ोल्डर के रूप में अपने कंटेनर में एक मेजबान निर्देशिका बढ़ते जिसमें आपके Laravel एप्लिकेशन रहता है। इस तरह आप होस्ट से php artisan migrate या composer update चला सकते हैं। आपको तैनाती के साथ समस्या हो सकती है, हालांकि, आपको सर्वर पर अपने पर्यावरण के उस हिस्से को दोहराना होगा।

  2. आपके कंटेनर में एक एसएसएच सर्वर जोड़ना (जिसे अनुशंसित नहीं किया गया है; here's a good discussion of that)।

  3. nsenter का निर्माण और उपयोग करें, एक चलने वाले कंटेनर को "प्रवेश" करने और खोल पहुंच प्राप्त करने के लिए एक उपकरण। ध्यान दें, मैंने इसका उपयोग नहीं किया है, मैंने इसे कुछ समय पहले उपरोक्त लिंक में संदर्भ के माध्यम से पाया था।

आप मुख्य रूप से तैनाती में रुचि रखते हैं और आप एक dockerfile के माध्यम से यह कर रहे हैं, तो इसका जवाब आपके dockerfile को composer install और php artisan migrate जोड़ने के लिए तो वे चलते हैं तो कंटेनर बनाया गया है किया जाएगा।

मुझे इसके और अधिक जवाब सुनने में रूचि है। यह ऐसा कुछ है जिसे मैं अभी भी अंदर ला रहा हूं और इसके बारे में अधिक जानना चाहता हूं।

1

मैं एसएसएच का उपयोग करता हूं और कंटेनर के अंदर टर्मिनल से माइग्रेशन चलाता हूं।

मुझे व्यक्तिगत रूप से Phusion's डॉकर का उपयोग 'lightweight virtual machine' के रूप में करने का दृष्टिकोण पसंद है। तो मैंने अपने baseimage-docker का उपयोग किया जो मैंने अपना खुद का Docker image for Laravel applications बनाने के लिए बढ़ाया है।

मुझे पता है कि फ़्यूज़न की छवि डॉकर समुदाय में विवादास्पद हो सकती है, और SSH is frowned upon जो डॉकर कंटेनरों को सूक्ष्मदर्शी के रूप में वकील करते हैं। लेकिन मैं फ्यूजन के दृष्टिकोण से खुश हूं जब तक बहु-कंटेनर दृष्टिकोण के लिए अधिक स्थापित टूल और प्रथाएं नहीं हैं।

10

डोकर 1.3 नए आदेश exec लाने तो अब आप की तरह

docker exec -it my-container-name /bin/bash 

चल कंटेनर "enter" कर सकते हैं उसके बाद आप किसी भी कमांड चला सकते हैं आप चाहते हैं

php artisan --version 
+0

? यदि चल रहा कंटेनर टीटीवी मोड में नहीं है –