2017-01-05 33 views
12

Tôi đang gặp khó khăn khi tìm ra cách thiết lập gỡ lỗi từ xa ứng dụng python (Flask) đang chạy trong vùng chứa Docker. Cụ thể tôi đang sử dụng docker-compose, PyCharm chuyên nghiệp và python 3.5. Đây là những gì tôi đã thực hiện cho đến nay:Gỡ lỗi từ xa PyCharm trong vùng chứa docker

  • tôi sao chép "pycharm-debug-py3k.egg" vào thư mục dự án
  • tôi đã thêm các dòng sau trong file wsgi.py:

    nhập sys sys.path.append ('../ pycharm-debug-py3k.egg') nhập pydevd pydevd.settrace ('0.0.0.0', port = 8200, stdoutToServer = True, stderrToServer = True)

  • Tôi đã tạo cấu hình gỡ lỗi từ xa trong PyCharm (bằng cách ánh xạ đường dẫn của đường dẫn dự án máy cục bộ của tôi đến đường dẫn trong t ông Docker chứa)

bằng cách chạy cấu hình debug (click vào biểu tượng lỗi) từ PyCharm nó in (và bị treo):

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... 

... và trong các bản ghi chứa Docker Tôi đọc :

không thể kết nối 0.0.0.0: 4200

tôi nên làm gì? (Mục tiêu của tôi là có thể thêm điểm ngắt trong PyCharm và ngừng thực hiện ứng dụng vùng chứa docker để gỡ lỗi nó)

+0

Chúng tôi cần thêm thông tin. Bạn đã thiết lập Python là SDK từ xa - nếu có, bạn có máy chủ SSHD trên vùng chứa mà tôi đề xuất. Trong trường hợp này, pycharm nên thực sự làm tất cả cho bạn, liên quan đến đường hầm - nó sẽ không còn là một câu hỏi docker –

+0

Không, tôi không sử dụng một thông dịch viên từ xa ... phải không? – daveoncode

+0

kiểm tra số cổng của bạn, giống như trong tệp 'wsgi.py' bạn đã xác định' pydevd.settrace ('0.0.0.0', port = 8200, stdoutToServer = True, stderrToServer = True) 'nhưng máy chủ gỡ lỗi đang chạy trên' 4200', có thể thay đổi thành 'pydevd.settrace ('0.0.0.0', port = 4200, ...' hoạt động? – Pitt

Trả lời

7

Sử dụng trình thông dịch từ xa, điều này sẽ giải quyết một vài vấn đề cùng một lúc. Tôi đã trả lời câu hỏi này tại đây Rich editors in a Docker development environment

Thêm SDK python từ xa vào IDE của bạn, điều này sau đó cũng sẽ giải quyết tất cả các thư viện được cài đặt từ xa. Bạn sẽ yêu cầu kết nối SSH để thực hiện việc này, vì vậy hãy cài đặt sshd và sử dụng khóa nhà phát triển được chia sẻ mà tôi đã nêu trong câu trả lời của mình.

Mặc dù bây giờ nỗ lực hơn một chút, tôi sẽ cung cấp cho bạn kết quả tốt hơn nhiều, cũng trong các phần khác mà bạn chưa gặp phải và sẽ tìm thấy, khi chỉ thực hiện kết nối cổng từ xa.

Nếu bạn vẫn muốn sử dụng gỡ lỗi dựa trên cổng, hãy xem Docker: MacOSX Expose Container ports to host machine - điều này giải thích cách bạn nên hiểu phần đính kèm và phần nghe.

Các vấn đề liên quan