我尝试遵循VS Code的Python扩展的有限文档,其中解释了远程调试的参数。
Dockerfile
FROM python:3.5.2
RUN apt-get update \
--no-install-recommends && rm -rf /var/lib/apt/lists/* \
&& mkdir -p /code \
EXPOSE 8000
WORKDIR /code
COPY requirements.txt /code
RUN /bin/bash --login -c "pip install -r requirements.txt"
ADD . /code
CMD []
docker-compose.yml
version: '2'
services:
db:
image: postgres
web:
build: .
volumes:
- .:/code
ports:
- "8000:8000"
command: bash -c "./wait-for-it.sh db:5432 && python manage.py migrate && python manage.py runserver 0.0.0.0:8000 --noreload"
depends_on:
- db
launch.json
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "${workspaceRoot}",
"remoteRoot": "/code",
"port": 8000,
"secret": "debug_secret",
"host": "localhost"
}
我还在项目文件中添加了一行ptvsd.enable_attach("debug_secret", address = ('0.0.0.0', 8000))
问题
每当我启动调试器时,什么也不发生,看起来 VS Code 正在等待断点命中。但它从未发生过。
有任何想法吗?
编辑:小更新
我尝试使用不同的调试器端口以及在docker-compose.yml
中公开新端口,但都没有成功。看起来附加成功了,因为调试器没有崩溃,但没有触发断点。我真的被卡住了。
解决方案
请参见 theBarkman 的答案。 我要补充说明的是,我无法使用密码来使其工作。我做了以下操作:
manage.py
import ptvsd
ptvsd.enable_attach(secret=None, address=('0.0.0.0', '3000'))
launch.json
{
"name": "Attach Vagrant",
"type": "python",
"request": "attach",
"localRoot": "${workspaceRoot}",
"remoteRoot": "/code",
"port": 3000,
"secret": "",
"host":"localhost"
}