2015-06-15 27 views
20

tôi thấy rằng tôi không phải là người đầu tiên đặt câu hỏi nhưng không có câu trả lời rõ ràng cho điều này:Docker-soạn và pdb

Làm thế nào để sử dụng pdb với Docker-nhà soạn nhạc trong phát triển Python?

Khi bạn hỏi chú Google về django docker bạn nhận tuyệt vời ví dụ Docker-nhà soạn nhạc và hướng dẫn và tôi có một môi trường làm việc - tôi có thể chạy docker-compose up và tôi có một môi trường phát triển gọn gàng nhưng PDB không hoạt động (mà là rất buồn).

tôi có thể giải quyết với chạy docker-compose run my-awesome-app python app.py 0.0.0.0:8000 nhưng sau đó tôi có thể truy cập ứng dụng của tôi trên http://127.0.0.1:8000 từ máy chủ (Tôi có thể với docker-compose up) và có vẻ như rằng mỗi lần tôi sử dụng run container mới được thực hiện như: dir_app_13dir_db_4 mà tôi don' t ham muốn chút nào.

Những người thiện chí sẽ giúp tôi.

PS
Tôi đang sử dụng pdb ++ cho ví dụ đó và một docker-compose.yml cơ bản từ this django example. Ngoài ra tôi đã thử nghiệm nhưng không có gì có vẻ giúp tôi. Và tôi đang sử dụng docker-composer 1.3.0rc3 vì nó có hỗ trợ trỏ Dockerfile.

Trả lời

19

Thử chạy container web của bạn với các tùy chọn --service-cổng: docker-compose run --service-ports web

+0

Điều đó đã làm nó! Cảm ơn các bạn. Tôi hiện đang sử dụng docker-compose để tạo môi trường và chạy dịch vụ của mình hoặc thử nghiệm với 'chạy docker-compose --rm --service-ports python app.py 0.0.0.0: 8000'. Tạm biệt Vagrant! – McAbra

+0

Tôi đang gặp một số vấn đề với phương pháp này. Thiết bị đầu cuối của tôi là trống khi tôi gõ một cái gì đó trong pdb – Jitu

+0

Bạn nhận được dấu nhắc pdb, mặc dù? Tôi không biết làm thế nào để giúp đỡ mà không có thêm thông tin, như những gì bạn đang sử dụng khuôn khổ, những dịch vụ, vv – Jamey

27

Sử dụng các bước sau để đính kèm pdb trên bất kỳ kịch bản python.

Bước 1. Thêm dòng sau trong file yml bạn

stdin_open: true 
tty: true 

này sẽ kích hoạt chế độ tương tác và sẽ đính kèm stdin. Điều này tương đương với chế độ -it.

Bước 2.

docker attach <generated_instanceid> 

Bây giờ bạn sẽ nhận được vỏ pdb

+0

Điều này làm việc hoàn hảo cho tôi khi cố gắng để bắt đầu tất cả các container của tôi với 'docker-compose up', cảm ơn bạn. – Nobilis

+2

Vì lý do nào đó, điều này không hiệu quả với tôi. Tôi có phiên bản docker-compose 2.1 – Divick

+0

Với khung hình của câu hỏi tôi ngạc nhiên đây không phải là câu trả lời được chấp nhận. Có một vài quirks nhưng hoàn toàn không những gì đã được yêu cầu. –

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