调试模式:Django Docker Pycharm

调试模式:django docker pycharm

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

先决条件:

pycharm professional(用于 docker 支持)docker 和 docker composedjango rest framework (drf) 应用程序

除了调试模式所需的更新之外,本文不会介绍有关 django、docker 或 docker composer 设置的详细信息。它假设您已经掌握了如何使该部件工作的实用知识。

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

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

下面是一个 dockerfile 示例:

# builder stagefrom python:3.9-slim as builderrun chmod 1777 /tmp# install system dependenciesrun apt-get update && apt-get install -y     libpq-dev     build-essentialworkdir /app# copy the requirements file into the containercopy requirements.txt /app/run pip install --no-cache-dir -r requirements.txt > pip_install.log# copy the current directory contents into the containercopy . /app# collect static filesrun python manage.py collectstatic --noinput# final stagefrom python:3.9-slim# set environment variablesenv pythonunbuffered=1env django_settings_module=template.settings.development# set work directoryworkdir /app# copy files from the builder stagecopy --from=builder /app /app# install pydevd-pycharm for remote debugging and gunicorn for servingrun pip install gunicorn pydevd-pycharm==241.17890.14 psycopg2-binary# expose necessary portsexpose 8000 5679  # web app port and debug port# entry point for the containerentrypoint ["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 进行调试

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

然后点击“保存”!

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

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

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

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

登录后复制

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

第 5 步:运行 docker 并调试

构建并运行 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 应用程序的编写、测试和调试,从而更轻松地编写代码!

祝你破解代码愉快!

以上就是调试模式:Django Docker Pycharm的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2194457.html

(0)
上一篇 2025年2月25日 20:32:15
下一篇 2025年2月25日 02:34:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用 Python 进行思科自动化

    网络设备(例如 cisco 路由器和交换机)的自动化可以使用 python 和 netmiko 库轻松实现,该库旨在轻松处理 ssh 连接。下面,我向您展示两个基本脚本,用于查看 cisco 设备的配置以及自动创建和配置 vlan。 1。查…

    2025年2月25日
    200
  • 如何用 Python 编写干净的代码 – 最佳实践指南

    编写 python 代码时,必须使其干净且易于阅读。干净的代码意味着您的代码组织良好、易于理解且易于维护。在本指南中,我们将分享最佳技巧,帮助您用 python 编写干净的代码,无论您是初学者还是经验丰富的开发人员。 为什么干净的代码很重要…

    2025年2月25日
    200
  • 掌握 Python 脚本执行:综合指南

    学习跨环境执行 Python 脚本的基础知识和高级技术。提高效率并避免常见错误。 简介: Python 脚本的执行用于运行 Python 代码来执行任务、自动化工作流程或构建应用程序。 Python 作为最流行的语言之一,提供了多种在不同环…

    2025年2月25日
    200
  • Python 的四种数据结构

    python 的四种数据结构 列表: 可变:您可以在创建列表后更改、添加或删除项目。有序:保持项目的顺序,并且可以通过索引访问项目。语法:使用方括号 [] 或 list() 函数创建。重复:允许重复元素。示例: [1, 2, 3, &#82…

    2025年2月25日
    200
  • Python:有趣的代码模式

    我主要使用 python 工作,几乎每天都会检查代码。在我们的代码库中,格式化和 linting 由 ci 作业使用 black 和 mypy 处理。所以,我们只关注改变。 在团队中工作时,您已经知道某个团队成员会编写什么样的代码。当新人加…

    2025年2月25日
    200
  • 使用 Python 与 Gmail POPerver 对话

    pop 是一个相对古老的协议。第一个版本是在 1984 年指定的。至今仍在使用的版本 pop3 是在 1996 年指定的。为了尝试一下,我开始连接到 gmail pop3 服务器。 第一步是查找 pop3 设置 – 连接到哪个服…

    2025年2月25日
    200
  • 通过 Web 搜索功能增强您的 RAG 应用程序!

    介绍 当使用检索增强生成(rag)应用程序构建有趣的项目时,我们经常面临浏览限制等限制,这使得很难获取最新信息或当前数据,例如天气更新(我希望有更有趣的东西)。为了解决这个问题,我们可以为 rag 应用程序配备搜索互联网的工具。让我们开始吧…

    2025年2月25日
    200
  • 了解 Python 中的装饰器

    简介:您是否曾经遇到过 python 代码库,其中“@login_required”或“@”符号与函数或类之上的任何其他后缀一起使用,您立即开始想知道它是什么或它的目的是什么? 或者您过去是否使用过一个框架,其中文档说您应该使用特定的装饰器…

    2025年2月25日
    200
  • PYTHON:OOP {初学者版}

    python:面向对象编程 [oop]:是一种编程范式(模型),它使用 对象 和 类 以模拟现实世界实体和模型的方式构建软件。关系。这是基于这样的想法:对象可以包含数据和操作该数据的代码。 关于面向对象编程,您需要了解一些关键概念: 班级对…

    2025年2月25日
    200
  • 制作 Rooh London 网站:棉质长袍之旅和技术挑战

    创建一个体现 Rooh London 优雅和艺术性的网站绝非易事。我们的平台,尤其是棉质长袍部分,旨在提供无缝且奢华的购物体验。本文探讨了 Rooh London 网站的构建过程、我们遇到的技术挑战、使用的编程语言以及我们未来的目标。 设计…

    2025年2月25日
    200

发表回复

登录后才能评论