2017-01-05 27 views
12

में PyCharm रिमोट डीबग मुझे डॉकर कंटेनर में चल रहे एक अजगर ऐप (फ्लास्क) के रिमोट डीबग को कैसे सेट अप करने का प्रयास करने में कठिनाई हो रही है। विशेष रूप से मैं डॉकर-कंपोज़, पायचर्म पेशेवर और पायथन 3.5 का उपयोग कर रहा हूं। यह मैं अब तक क्या किया है है:एक डॉकर कंटेनर

  • मैं "pycharm-डिबग-py3k.egg" प्रोजेक्ट फ़ोल्डर
  • में नकल मैं जोड़ा wsgi.py फ़ाइल में निम्नलिखित लाइनों:

    आयात sys sys.path.append ('../ pycharm-डिबग-py3k.egg') आयात pydevd pydevd.settrace ('0.0.0.0', बंदरगाह = 8200, stdoutToServer = सच, stderrToServer = सच)

  • मैंने PyCharm में एक दूरस्थ डीबग कॉन्फ़िगरेशन बनाया है (टी में एक के लिए मेरे स्थानीय मशीन प्रोजेक्ट पथ के पथ का मानचित्रण करके वह डोकर कंटेनर)

डिबग विन्यास चलाकर (बग आइकन पर क्लिक करें) PyCharm से यह प्रिंट (और रुक जाता है):

Starting debug server at port 4200 
Use the following code to connect to the debugger: 
import pydevd 
pydevd.settrace('0.0.0.0', port=4200, stdoutToServer=True, stderrToServer=True) 
Waiting for process connection... 

... और डोकर कंटेनर लॉग मैंने पढ़ा में :

0.0.0.0 से कनेक्ट नहीं किया जा सका: 4200

मुझे क्या करना चाहिए? (मेरा लक्ष्य PyCharm में ब्रेकपॉइंट जोड़ने और डबग करने के लिए डॉकर कंटेनर ऐप के निष्पादन को रोकने में सक्षम होना है)

+0

हमें और अधिक जानकारी की आवश्यकता है। क्या आपने पाइथन को दूरस्थ एसडीके के रूप में सेट किया था - यदि हां, तो आपके पास सुझाव देने वाले कंटेनर पर एक एसएसएचडी सर्वर है। इस मामले में, सुरंग के संबंध में, वास्तव में आपके लिए पिचर्म को यह सब करना चाहिए - यह अब एक डॉकर प्रश्न नहीं होगा –

+0

नहीं, मैं रिमोट दुभाषिया का उपयोग नहीं कर रहा हूं ... क्या मुझे चाहिए? – daveoncode

+0

अपने पोर्ट नंबर की जांच करें, जो आपके 'wsgi.py' फ़ाइल में परिभाषित है जैसा आपने परिभाषित किया है' pydevd.settrace ('0.0.0.0', पोर्ट = 8200, stdoutToServer = True, stderrToServer = True) 'लेकिन डीबग सर्वर ' 4200', हो सकता है कि 'pydevd.settrace (' 0.0.0.0 ', पोर्ट = 4200, ...' में बदल रहा हो? – Pitt

उत्तर

7

रिमोट दुभाषिया का उपयोग करें, यह एक ही समय में कुछ मुद्दों को हल करेगा। मैंने पहले ही इसका उत्तर दिया है Rich editors in a Docker development environment

अपने आईडीई में एक दूरस्थ पायथन एसडीके जोड़ें, फिर यह दूरस्थ रूप से स्थापित सभी पुस्तकालयों को भी हल करेगा। हालांकि इसे करने के लिए आपको एक एसएसएच कनेक्शन की आवश्यकता होगी, इसलिए sshd इंस्टॉल करें और मेरे उत्तर में उल्लिखित साझा डेवलपर कुंजी का उपयोग करें।

हालांकि यह अब थोड़ा और प्रयास है, फिर भी मैं आपको उन अन्य अनुभागों में भी बेहतर परिणाम दूंगा जो आपको अभी तक नहीं मिला है और मिलेगा, केवल रिमोट-पोर्ट कनेक्शन करते समय।

यदि आप अभी भी पोर्ट-आधारित डीबगिंग का उपयोग करना चाहते हैं, तो Docker: MacOSX Expose Container ports to host machine देखें - यह बताता है कि आपको अनुलग्नक और सुनो भाग को कैसे समझना चाहिए।

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