所以我在Docker内部运行了这个Django应用,我正尝试将VS代码附加到它,以便可以在这里调试我的启动文件
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 8800,
"host": "192.168.99.100",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}
这是我的docker文件
FROM registry.gitlab.com/datadrivendiscovery/images/primitives:ubuntu-bionic-python36-v2020.1.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /bbml
WORKDIR /bbml
COPY requirements.txt /bbml/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
RUN pip install ptvsd
ADD . /bbml/
CMD python -m ptvsd --host 0.0.0.0 --port 3500 --wait --multiprocess -m ./manage.py runserver 0.0.0.0:8800
# CMD [ "python", "./manage.py runserver 0.0.0.0:8800" ]
这是我的docker-compose
version: '3'
services:
web:
build: .
command: "python3 manage.py runserver 0.0.0.0:8800"
container_name: bbml
volumes:
- .:/bbml
ports:
- "8800:8800"
- "3500:3500"
如您所见,我正在3500端口上运行ptvsd,但是每次我按下VScode上的绿色运行按钮时,我都会得到“ connect ECONNREFUSE 192.168.99.100:3500”。有什么建议吗?
答案 0 :(得分:2)
我也有这个问题。我找到了解决方法here
基本上,您必须使用debugpy.listen(("0.0.0.0", 5678))
之所以会这样,是因为默认情况下,debugpy在localhost上侦听。如果您的Docker容器位于另一台主机上,则必须添加0.0.0.0