2016-10-25 2 views
6

방금이 질문에 등록했습니다. VS 코드가있는 Docker 컨테이너에서 Python 코드를 원격 디버깅 할 수 있는지 여부입니다. 여기에는 완전히 구성된 Docker Container가 있습니다. 나는 그것에 대해 약간의 도움을 받았고, 나는 어쨌든 도커를 아주 좋아했습니다. 그것에서 Odoo v10을 실행합니다. 하지만 작동하지 VS 코드 원격 디버그 얻을. this 설명을 시도했지만 실제로 얻지는 못합니다. 심지어 가능합니까? 그리고 그렇다면 어떻게 작동시킬 수 있습니까? 저는 쿠분투 16.04를 VS Code 1.6.1과 Don Jayamanne의 Python Extension으로 돌리고 있습니다. 아, 나는이 질문이있는 올바른 위치에 있기를 바랍니다. 어떤 규칙에도 위배되지 않습니다. VS 코드가있는 도커 컨테이너의 파이썬 코드를 원격 디버그하는 방법

는 UPDATE :

그냥 엘튼 스톤 맨의 방법을 시도했다.

There was an error in starting the debug server. 
Error = {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect", 
     "address":"172.21.0.4","port":3000} 

Dockerfile은 다음과 같습니다 : 이것은 이전의 PyDev (이클립스) 작업을위한 목적으로했기 때문에 내 Dockerfile에서

FROM **cut_out** 
USER root 
# debug/dev settings 

RUN pip install \ 
     watchdog 

COPY workspace/pysrc /pysrc 
RUN apt-get update \ 
&& apt-get install -y --no-install-recommends \ 
     build-essential \ 
     python-dev \ 
&& /usr/bin/python /pysrc/setup_cython.py build_ext --inplace \ 
&& rm -rf /var/lib/apt/lists/* 

EXPOSE 3000 

USER odoo 

pysrc가 그것으로이 오류를 받고 있어요.

이 내가 사용했던 run command입니다 :

docker-compose run -d -p 3000:3000 odoo 

을 그리고 이것은 내 launch.json의 중요한 부분입니다 :

{ 
     "name": "Attach (Remote Debug)", 
     "type": "python", 
     "request": "attach", 
     "localRoot": "${workspaceRoot}", 
     "remoteRoot": "${workspaceRoot}", 
     "port": 3000, 
     "secret": "my_secret", 
     "host": "172.21.0.4" 
    } 

나는 그 지금은 충분한 정보를 바랍니다.

UPDATE 2 :

좋아, 나는 해결책을 찾아 냈다. Docker가 어떻게 작동하고 잘못했는지 오해했습니다. Docker로 구성된 완성품을 이미 가지고 있습니다. 그래서 내가해야 할 일은 VS 코드 설정을 docker-compose.yml에 적용하는 것이었다. 즉, launch.json을 포트 8069 (기본 Odoo 포트)로 변경하고 docker-compose up 만 사용하면 VS 코드에서 디버깅이 작동합니다. 불행히도 ptvsd을 사용하면 내 Odoo 환경이 손상되지만 적어도 지금은 디버깅 할 수 있습니다. 감사!

+0

업데이트 2를'launch.json'에 넣은 것으로 업데이트 할 수 있습니까? 또한 당신이'docker-compose up '을 사용한다고했을 때 당신이 의미하는 바를 잘 모릅니다. 귀하의 워크 플로우에 대한 설명은 감사하겠습니다 :) – allthethings

+0

불행히도 나는 내 '발사가 없어.이 프로젝트에서 더 이상 json을 사용하지 않았지만, 내가 변경 한 것은 포트 "8069"에 대한 포트였습니다. 'docker-compose'는 도커의 기능을 확장하는 도구입니다. 'docker-compose up'은 발견 된 모든 도커 컨테이너를 시작합니다. 내가 의도 한대로 작동하지 않는다고 말하면서, 원격 디버깅 도커가 VS 코드에서 절대로 tbh로 작동하지 못했습니다. 일하러 가면 제게 말해주십시오. :) – Brotbret

답변

4

예, 가능합니다. Python 앱이 Docker 컨테이너에서 실행 중일 때 원격 컴퓨터처럼 취급 할 수 있습니다.

Docker 이미지에서 원격 디버깅 포트 (예 : Dockerfile의 EXPOSE 3000)를 사용하고 Python 앱에 ptvsd 설정을 포함시킨 다음 컨테이너를 실행할 때 포트를 게시해야합니다 :

docker run -d -p 3000:3000 my-image 

그런 다음 실행 컨테이너의 IP 주소를 얻기 위해 docker inspect를 사용, 그것은 당신이 발사 파일의 host에 사용하는거야.

+0

대단히 고맙습니다. 이미 도움이되었습니다. 하지만 한 가지 더 : 내가 가지고있는 모든'.py' 스크립트에서'ptvsd'를 가져와야합니까? 왜냐하면 그건 오도와 많은 관계가 있기 때문입니다. 프로젝트 당 하나의 가져 오기와 같은 더 좋은 방법이 있습니까? – Brotbret

+0

불행히도 당신의 방식대로 시도 할 시간이 없었습니다. 작동하지 않습니다. 디버그 할 때마다 디버그 콘솔에서이 오류가 발생합니다. – Brotbret

+0

죄송합니다. StackOverflow에 익숙해졌습니다. 이 오류 : '디버그 서버를 시작하는 중 오류가 발생했습니다. 오류 = { "code": "ECONNREFUSED", "errno": "ECONNREFUSED", "syscall": "connect", "address": "172.21.0.4", "port": 3000} 시작시 오류가 발생했습니다. 디버그 서버. 오류 = { "코드": "ECONNREFUSED", "errno": "ECONNREFUSED", "syscall": "연결", "주소": "172.21.0.4", "포트": 3000}' 두 번 출력) 어쩌면 어떤 아이디어일까요? – Brotbret

관련 문제