vscode中对docker容器中运行的django项目进行调试+视频

文章详细介绍了如何使用VSCode调试运行在Docker容器内的Django项目,包括Dockerfile和docker-compose.debug.yml的配置,以及.vscode目录下launch.json和tasks.json的修改,以实现远程调试和应用启动。同时提到了Django项目的视图函数和URL路由设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频

vscode调试docker里的django

代码:
创建容器映射

docker run --name dockerdjango -v c/Docker/da/app:/app -w /app python:3.11.3-alpine3.17 sh -c "pip install --upgrade pip && pip install Django==4.2 && django-admin startproject app ."

Dockerfile文件需修改为

# Dockerfile是一个文本文件,用于描述如何构建一个Docker镜像。
# FROM python:3.10-slim  vscode自动生成的是固定模板
FROM python:3.11.3-alpine3.17
EXPOSE 8000
# Keeps Python from generating .pyc files in the container---阻止 Python 在容器中生成 .pyc 文件
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging----------关闭缓冲以简化容器日志记录
ENV PYTHONUNBUFFERED=1
# Install pip requirements---------------------------------复制django插件文件,然后安装django需要的插件
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /app
#这个文件的路径是c/docker/da
#需要复制c/docker/da/app文件的内容复制至容器的/app文件夹中,因为不需要其他文件复制到docker容器中
COPY ./app /app
# 创建具有显式 UID 的非 root 用户,并添加访问 /app 文件夹的权限
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app.wsgi"]

requirements.txt文件需要修改为

# 自动生成
# django>=4.1.5
# gunicorn>=20.1.0
# 改为
django>=4.1.5,<4.2
gunicorn>=20.1.0,<20.2

docker-compose.debug.yml文件需要修改为

version: '3.4'

services:
  da:
    image: da
    build:
      context: .
      dockerfile: ./Dockerfile
    command: ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 manage.py runserver 0.0.0.0:8000 --nothreading --noreload"]
    ports:
      - 8000:8000
      - 5678:5678
     

.vscode文件夹中的
launch.json文件需要修改为

{
    "configurations": [
        {
            "name": "Docker: Python - Django",
            "type": "docker",
            "request": "launch",
            "preLaunchTask": "docker-run: debug",
            "python": {
                "pathMappings": [
                    {
                        "localRoot": "${workspaceFolder}/app",
                        "remoteRoot": "/app"
                    }
                ],
                "projectType": "django"
            }
        }
    ]
}

.vscode文件夹中的
tasks.json文件需要修改为

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "docker-build",
			"label": "docker-build",
			"platform": "python",
			"dockerBuild": {
				"tag": "da:latest",
				"dockerfile": "${workspaceFolder}/Dockerfile",
				"context": "${workspaceFolder}",
				"pull": true
			}
		},
		{
			"type": "docker-run",
			"label": "docker-run: debug",
			"dependsOn": [
				"docker-build"
			],
			"python": {
				"args": [
					"runserver",
					"0.0.0.0:8000",
					"--nothreading",
					"--noreload"
				],
				"file": "manage.py"
			}
		}
	]
}

添加da/app/app/views.py文件

from django.http import HttpResponse

def index(request):

    print("hello")

    ak()

    return HttpResponse("hello")

def ak():

    print("asdasds")

对da/app/app/urls.py文件进行修改

from django.contrib import admin
from django.urls import path
from app.views import index
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值