LoginSignup
12
13

More than 5 years have passed since last update.

VSCodeからDocker for Windowsのpythonにリモートデバッグ(ptvsd==4.1.3)

Posted at

VSCodeからDocker for Windowsのpythonにリモートデバッグする

要約

  • ptvsd==3.0.0という記事は古い => 最新版でよい
  • ポート3000って意味ある? => デフォは5678
  • 一次情報にも触れましょう PyPI / git

VSCode準備

確認したバージョン

  • VSCode本体 1.28.0
  • VSCode拡張
    • Docker(peterjausovec.vscode-docker) 0.3.1
    • Python(ms-python.python) 2018.9.0

デバッグ実行するコード

  • ptvsd.enable_attach()にしてます、ほかの設定に合わせてパラメータでポートいじれます
    • 定義はenable_attach(address=(DEFAULT_HOST, DEFAULT_PORT), redirect_output=True)
    • およびDEFAULT_HOST = '0.0.0.0'
    • そしてDEFAULT_PORT = 5678
sample.py
import ptvsd
ptvsd.enable_attach()
ptvsd.wait_for_attach()
ptvsd.break_into_debugger()

file = open('/etc/os-release')
content = file.read()
print(content)
file.close()

デバッグ実行準備

launch.json
    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "port": 5678,
      "host": "localhost",
      "localRoot":  "${workspaceFolder}",
      "remoteRoot": "/app"
    },

Docker準備

ファイルツリー
workspace
│  .dockerignore
│  docker-compose.yml
│  Dockerfile
│  requirements.txt
│  sample.py
│
└─.vscode
       launch.json
  • ポート5678開放
Dockerfile
FROM python:3.6.6-slim-stretch
LABEL Name=pyremotedebug Version=0.0.1
EXPOSE 5678
WORKDIR /app
ADD . /app
RUN python -m pip install -r requirements.txt
  • ptvsdは4.1.3
requirements.txt
ptvsd==4.1.3
  • よその記事みたいにポート3000でもいいけど、衝突しなければ何でもいいです
docker-compose.yml
version: '2.1'

services:
  pyremotedebug:
    image: pyremotedebug
    build: .
    ports:
      - 5678:5678
    volumes: 
      - .:/app
    command: >
      python
      /app/sample.py
  • (一度だけ)dockerイメージつくる
    • docker-compose build

デバッグ実行

  • コンテナ起動しつつ

    • docker-compose up -d
      • 二度目以降はVSCode的には、Dockerのアイコン=>DOCKER EXPLORER=>Containers=>目当てのコンテナを右クリ=>Restart Containerでしょうか
      • 統合ターミナルで上+Enterの方が楽か
  • 環境Python: Attachでデバッグ実行する

    • sample.pyのLine6 file = open('/etc/os-release') で止まるはず

以上

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13