PyCharm中基于docker-compose的Sanic项目调试配置咨询
我太懂这种踩坑的感觉了——接手了个用Docker Compose搭的多服务项目,本地调试本来就头大,找的教程还全是给Django写的,Sanic根本套不上。别慌,下面给你两套直接能用的Run/Debug配置模板,分别适配PyCharm和VS Code,你照着改就行:
PyCharm 下的 Docker Compose + Sanic 调试配置
首先得确保你的docker-compose.yml里,Sanic服务已经挂载了本地代码目录(这样改完本地代码能实时同步到容器里),参考示例:
services: sanic-app: build: . volumes: - ./:/app # 把本地项目根目录挂载到容器内的/app路径 ports: - "8000:8000" # Sanic服务的对外端口 environment: - SANIC_DEBUG=True # 开启Sanic的调试模式,支持代码热重载 command: python main.py # 替换成你的Sanic启动文件路径
接下来配置PyCharm的调试器:
- 打开顶部菜单的
Run > Edit Configurations - 点击左上角的
+号,选择Docker Compose类型 - 在
Services列表里选中你的Sanic服务(比如上面的sanic-app) - 切换到
Debugger标签页,找到Python配置区:- 设置
Path mappings:把本地项目根目录映射到容器内的/app(要和volumes里的路径完全一致) - 选择
Python interpreter:如果没自动识别,点击Configure添加容器内的Python解释器(PyCharm会自动扫描Docker Compose里的服务)
- 设置
- 保存配置后,点击调试按钮就能启动了,设置的断点会正常触发。
VS Code 下的 Docker Compose + Sanic 调试配置
第一步同样先把docker-compose.yml的挂载和基础配置弄好(参考上面的yaml示例)。
然后在项目根目录创建.vscode/launch.json文件,填入以下模板:
{ "version": "0.2.0", "configurations": [ { "name": "Docker Compose: Sanic Debug", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 # 这个端口要和后面Sanic启动时指定的调试端口一致 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/app" # 对应容器内的代码挂载路径 } ], "justMyCode": false } ] }
接下来要给Sanic服务添加调试支持:
- 在你的Dockerfile里安装
debugpy(Python官方推荐的调试工具):
RUN pip install debugpy
- 修改
docker-compose.yml里Sanic服务的command,加上调试参数:
command: python -m debugpy --listen 0.0.0.0:5678 --wait-for-client main.py
--wait-for-client参数会让Sanic服务等IDE连接后再启动,避免调试还没连上服务就跑起来了。
配置完成后,启动Docker Compose服务,然后在VS Code里点击调试按钮就能attach到容器里的Sanic进程,断点就能正常工作了。
关键注意事项
- 调试端口(比如示例里的5678)不需要在
docker-compose.yml里额外映射,因为Docker Compose默认的内部网络里,IDE能直接访问容器的端口 - 一定要开启Sanic的
DEBUG模式,不然代码修改后不会自动重载(调试时如果用了--wait-for-client,会等IDE连接后再启动服务) - 如果习惯用
ptvsd代替debugpy,只需要把安装包和启动命令换成对应的即可,核心逻辑都是路径映射和端口匹配
内容的提问来源于stack exchange,提问作者Alan Abishev
相关产品推荐
相关产品推荐

