You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django应用Docker化并通过VSCode调试?含docker-compose示例

Docker化Django应用后使用VSCode调试的可行方案

一、可行性说明

完全可以实现。借助VSCode的Python远程调试功能,配合Docker容器的端口映射与调试器配置,即使是用docker-compose管理Django、PostgreSQL、Redis多服务的场景,也能顺利进行断点调试。

二、具体操作步骤

1. 配置Docker与docker-compose

(1)Dockerfile添加调试依赖

在Django应用的Dockerfile中安装debugpy(Python官方调试器):

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install debugpy  # 安装调试工具

COPY . .

(2)docker-compose.yml配置服务

修改docker-compose.yml,给Django服务添加调试端口映射,并调整启动命令以启动调试监听:

version: '3.8'

services:
  web:
    build: .
    # 启动debugpy监听所有地址的5678端口,同时启动Django服务
    command: python -m debugpy --listen 0.0.0.0:5678 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app  # 挂载本地代码到容器,确保修改实时同步
    ports:
      - "8000:8000"  # 应用端口
      - "5678:5678"  # 调试端口映射到本地
    depends_on:
      - db
      - redis
    environment:
      - DEBUG=1
      - DATABASE_URL=postgres://user:password@db:5432/mydb
      - REDIS_URL=redis://redis:6379/0

  db:
    image: postgres:14-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=mydb

  redis:
    image: redis:alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

2. 配置VSCode调试文件

在项目根目录的.vscode文件夹下创建launch.json,添加远程调试配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Docker: Django Remote Debug",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678
            },
            // 映射本地代码目录与容器内代码目录,确保断点匹配
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "/app"
                }
            ],
            "justMyCode": false  // 允许调试第三方库代码(可选)
        }
    ]
}

3. 启动调试流程

  • 运行命令启动所有服务:docker-compose up --build
  • 在VSCode中给Django代码设置断点(点击代码行号左侧的空白区域)
  • 打开VSCode调试面板,选择Docker: Django Remote Debug配置,点击绿色启动按钮
  • 访问http://localhost:8000触发业务逻辑,当代码执行到断点时,VSCode会自动暂停,此时可以查看变量、单步执行、调用栈等调试操作

三、关键注意事项

  • 确保pathMappings中的remoteRoot与Docker容器内的工作目录完全一致,否则VSCode无法正确关联本地与容器内的代码
  • 容器内的Python版本尽量与本地VSCode使用的Python版本保持一致,避免调试兼容性问题
  • 启动命令中的--listen 0.0.0.0:5678不能改为localhost:5678,否则本地无法连接容器内的调试端口

内容的提问来源于stack exchange,提问作者kozhioyrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:15:43