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

如何指定Docker容器中Django应用的VSCode调试端口?

解决VSCode Docker调试Django时端口随机分配的问题

问题核心是当前调试配置用的是VSCode内置的docker-run任务,该任务默认会随机映射本地端口,而非复用docker-compose.yaml里的固定端口配置。以下是调整步骤:

1. 更新tasks.json,改用docker-compose启动任务

将原来的docker-run: debug任务替换为docker-compose类型的任务,直接复用你的docker-compose.yaml配置:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "docker-build",
            "label": "docker-build",
            "platform": "python",
            "dockerBuild": {
                "tag": "vscodedjangodocker:latest",
                "dockerfile": "${workspaceFolder}/Dockerfile",
                "context": "${workspaceFolder}",
                "pull": true
            }
        },
        {
            "type": "docker-compose",
            "label": "docker-compose: debug",
            "dependsOn": ["docker-build"],
            "dockerCompose": {
                "up": {
                    "services": ["backend"],
                    "build": true
                },
                "files": ["${workspaceFolder}/docker-compose.yaml"]
            }
        }
    ]
}

2. 调整launch.json,关联新的docker-compose任务

修改preLaunchTask指向新的任务标签,并指定容器名称确保调试器能正确匹配:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Docker: Python - Django",
            "type": "docker",
            "request": "launch",
            "preLaunchTask": "docker-compose: debug",
            "python": {
                "pathMappings": [
                    {
                        "localRoot": "${workspaceFolder}/src",
                        "remoteRoot": "/app/src"
                    }
                ],
                "projectType": "django",
                "port": 8000,
                "containerName": "backend"
            }
        }
    ]
}

3. 保留docker-compose.yaml的原有配置

你的docker-compose.yaml已经正确设置了端口映射8000:8000,无需修改:

version: '3.8'
services:
  backend:
    build: 
      context: .
      dockerfile: ./Dockerfile
    container_name: backend
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000
    volumes:
      - .:/app

生效说明

启动调试后,VSCode会先执行镜像构建,再通过docker-compose up启动服务,此时本地8000端口会直接映射到容器内的8000端口,同时调试器会自动附加到backend容器的Django进程上,既保留了固定端口的访问,又实现了调试功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:56:06