![](/img/trans.png)
[英]Can we remotely run and debug Python code from a Docker container using Spyder
[英]debug python code running in docker container from host using vscode
我有一个容器在我的主机上运行,它有一个 python 进程,并且我在主机上安装了 vs 代码。 是否可以从安装 vscode 的主机调试 python 进程? 如果是,如何实现?
由于我不知道您运行的是什么 python 进程,我将以 FastAPI 为例。
<project_root>/.vscode/launch.json
中定义一个新配置。 要访问此文件,您可以 go 到活动栏上的运行和调试部分,然后按顶部的 cog/wheel。在配置中添加一个新项目,如下所示。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}
现在您需要包含debugpy 。 如果您使用的是需求文件,则可以将其添加到那里。 如果你使用Poetry ,你可以在你的终端中运行poetry add debugpy
(Dockerfile 示例展示了如何在 docker 图像中使用 Poetry)。
第一个选项- 在您的Dockerfile 中,您需要运行debugpy并使其侦听端口5678 。 现在,每次运行容器并等待附件时,调试器都会启动。
FROM python:3.10.0
# Set the working directory:
WORKDIR /usr/src
# Copy the pyproject.toml file (or requirements.txt) to cache them in the docker layer:
COPY [ "./src/pyproject.toml", "./"]
# Set the python path if needed.
# For example, if main.py is not located in the project root:
ENV PYTHONPATH="$PYTHONPATH:${PWD}"
# Upgrade pip and install Poetry:
RUN pip install --upgrade pip && pip install poetry==1.1.12
# Project initialization using Poetry:
RUN poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi
# Run the application:
CMD ["python", "-m", "debugpy", "--wait-for-client", "--listen", "0.0.0.0:5678", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload", "--reload-exclude", "tests"]
EXPOSE 8000 5678
debugger = True
if __name__ == "__main__":
if debugger:
import debugpy
debugpy.listen(("0.0.0.0", 5678))
debugpy.wait_for_client()
uvicorn.run(
"main:app",
host="localhost",
port=8000,
log_level="info",
reload=True,
)
Python: Remote Attach
并从下拉菜单中按下。现在您应该可以在 docker 容器内使用调试器了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.