0

0

调试模式:Django Docker Pycharm

PHPz

PHPz

发布时间:2024-09-07 15:07:22

|

1127人浏览过

|

来源于dev.to

转载

调试模式:django docker pycharm

让您的本地设置正确调试您正在编写的代码所花费的时间比任何开发人员都愿意承认的要多。我们不要忘记,这主要是一个一次性完成的设置,所以如果我们不写下来,我们就不会记得。这篇文章就是为了解决这个确切的问题! 将此作为如何启动并运行本地开发环境的书面提醒。

先决条件:

  • pycharm professional(用于 docker 支持)
  • docker 和 docker compose
  • django rest framework (drf) 应用程序
除了调试模式所需的更新之外,本文不会介绍有关 django、docker 或 docker composer 设置的详细信息。它假设您已经掌握了如何使该部件工作的实用知识。

第 1 步:用于调试的 dockerfile 设置

将 dockerfile 设置为在开发模式下运行并允许来自 pycharm 调试器的连接。

下面是一个 dockerfile 示例:

# builder stage
from python:3.9-slim as builder

run chmod 1777 /tmp

# install system dependencies
run apt-get update && apt-get install -y \
    libpq-dev \
    build-essential

workdir /app

# copy the requirements file into the container
copy requirements.txt /app/
run pip install --no-cache-dir -r requirements.txt > pip_install.log

# copy the current directory contents into the container
copy . /app

# collect static files
run python manage.py collectstatic --noinput

# final stage
from python:3.9-slim

# set environment variables
env pythonunbuffered=1
env django_settings_module=template.settings.development

# set work directory
workdir /app

# copy files from the builder stage
copy --from=builder /app /app

# install pydevd-pycharm for remote debugging and gunicorn for serving
run pip install gunicorn pydevd-pycharm==241.17890.14 psycopg2-binary

# expose necessary ports
expose 8000 5679  # web app port and debug port

# entry point for the container
entrypoint ["sh", "-c", "python manage.py runserver 0.0.0.0:8000"]

有关此代码的注意事项

  • pydevd-pycharm 中的 241.17890.14==241.17890.14 会有所不同,具体取决于您拥有的 pycharm 版本
  • 我们公开 8000(web 服务器端口)和 5679(调试器端口)以供外部访问。

第2步:docker compose配置

让我们的 docker-compose.yml 文件来配置 web 服务(django 应用程序)以及数据库和其他服务。

这是一个示例 docker-compose.yml:

version: '3'

services:
  web:
    environment:
      - django_environment=development
      - db_host=host.docker.internal
    build:
      context: .
    command: >
      sh -c "python manage.py migrate &&
             python manage.py collectstatic --noinput &&
             python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/app
    ports:
      - "8000:8000"   # expose web port
      - "5679:5679"   # expose debugger port
    extra_hosts:
      - "host.docker.internal:host-gateway"
  db:
    image: postgres:13
    environment:
      - postgres_db=${db_name}
      - postgres_user=${db_user}
      - postgres_password=${db_password}

让我们进入代码分解

  • 我们正在为 web 服务器映射端口 8000,为 pycharm 调试器映射端口 5679。
  • extra_hosts 确保您的 docker 容器可以使用 host.docker.internal 与主机通信。

步骤 3:配置 pycharm 进行调试

  1. 创建 python 调试服务器配置:
  2. 在 pycharm 中导航至“运行 ➡️ 编辑配置”。
  3. 单击 + 按钮并选择 python 调试服务器。
  4. 将主机设置为 0.0.0.0 或本地计算机的 ip 地址。
  5. 将端口设置为 5679(或您在 docker 设置中公开的端口)。
  6. 然后点击“保存”!

    Tome
    Tome

    先进的AI智能PPT制作工具

    下载
  7. 启动调试器服务器:
    单击“调试”按钮(绿色错误图标)启动 pycharm 调试器。这将开始侦听我们设置的端口。

第四步:向django添加远程调试代码

在 django 项目中,您需要在 manage.py 或 wsgi.py 中添加以下代码以连接到 pycharm 调试器:

import pydevd_pycharm

# connect to the pycharm debug server
pydevd_pycharm.settrace('host.docker.internal', port=5679, stdouttoserver=true, stderrtoserver=true, suspend=false)

此代码片段告诉您的 django 应用程序连接回主机上运行的 pycharm 调试器。 host.docker.internal 解析为 docker 中的主机,port=5679 与我们之前暴露的端口匹配。

第 5 步:运行 docker 并调试

  1. 构建并运行 docker: 运行以下命令来启动容器:
docker-compose up --build

这将构建 docker 镜像并启动服务,包括在开发模式下运行的 django。

2。设置断点:
在 pycharm 中的 django 代码中设置断点。断点应该有效,因为您的容器将连接到在端口 5679 上运行的 pycharm 调试服务器。

3。触发您的代码:
现在,在 django rest framework api 中触发任何 http 请求。当代码到达断点时,pycharm 将暂停执行,允许您检查当前状态并单步执行代码。

第 6 步:故障排除

如果您在运行 docker 时遇到错误“bind: address already in use”,则说明另一个进程已使用端口 5679。在这种情况下,您可以:

  • 停止 pycharm 调试器并重新启动 docker。
  • 更改 docker-compose.yml 和 pycharm 配置中的端口以避免冲突。

结论

这是我使用 pycharm 强大的调试器在 docker 容器内以开发模式运行 django rest framework 应用程序的设置。此设置可以帮助我通过在本地逐行调试代码来调试后端代码。

通过设置 docker 容器与 pycharm 通信,您可以简化 django 应用程序的编写、测试和调试,从而更轻松地编写代码!

祝你破解代码愉快!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

161

2023.12.25

Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

166

2026.02.04

Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

166

2026.02.04

pycharm怎么改成中文
pycharm怎么改成中文

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。php中文网给大家带来了pycharm相关的教程以及文章,欢迎大家前来学习和阅读。

229

2023.07.25

pycharm安装教程
pycharm安装教程

PyCharm是一款由JetBrains开发的Python集成开发环境(IDE),它提供了许多方便的功能和工具。本专题为大家带来pycharm安装教程,帮助大家解决问题。

214

2023.08.21

如何解决pycharm找不到模块
如何解决pycharm找不到模块

解决pycharm找不到模块的方法:1、检查python解释器;2、安装缺失的模块;3、检查项目结构;4、检查系统路径;5、使用虚拟环境;6、重启PyCharm或电脑。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

667

2023.12.04

如何安装pycharm
如何安装pycharm

安装pycharm的步骤:1、访问PyCharm官方网站下载最新版本的PyCharm;2、下载完成后,打开安装文件;3、安装完成后,打开PyCharm;4、在PyCharm的主界面中等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

154

2024.02.23

python和pycharm的区别
python和pycharm的区别

Python和PyCharm是两个不同的概念,它们的区别如下:1、Python是一种编程语言,而PyCharm是一款Python集成开发环境;2、Python可以运行在各种不同的开发环境中,而PyCharm是专门为Python开发而设计的IDE等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

304

2024.02.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号