ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Cookiecutter Django + PyCharm:Docker 远程解释器与断点调试配置完整指南

Cookiecutter Django + PyCharm:Docker 远程解释器与断点调试配置完整指南 Cookiecutter Django PyCharmDocker 远程解释器与断点调试配置完整指南【免费下载链接】cookiecutter-djangoCookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.项目地址: https://gitcode.com/GitHub_Trending/co/cookiecutter-django本文基于 Cookiecutter Django 仓库中生成的 PyCharm 文档{{cookiecutter.project_slug}}/docs/pycharm/configuration.rst展开讲解如何在 PyCharm 中把 Docker 容器内运行 Django 的 Python 解释器注册为远程解释器从而让 IDE 直接运行、调试容器内的应用代码、pytest 测试与 Django 管理命令。读完本文你将掌握从连接 Docker 引擎、添加 Docker Compose 远程解释器到排查调试器挂起、处理.idea配置漂移的完整实战能力并理解仓库为何能开箱即用地提供这套配置。为什么要配置 Docker 远程解释器Cookiecutter Django 生成的本地开发环境默认运行在 Docker 容器中docker-compose.local.yml。此时你的宿主机上并没有项目所需的 Python 依赖、PostgreSQL 与 Redis直接在 PyCharm 里选一个本地解释器是跑不起来项目的。远程解释器Remote Interpreter的意义在于PyCharm 通过 Docker 引擎与容器通信在容器内部执行 Python 进程同时把断点、调试变量、控制台输出完整地回传到 IDE 界面。需要说明的是这套.idea配置与文档只在生成项目时选择了 PyCharm 编辑器选项cookiecutter.json中的editor: [None, PyCharm, VS Code]才会生成相应地{{cookiecutter.project_slug}}/docs/index.rst的 toctree 也会在editor PyCharm时才包含pycharm/configuration这一节。第一步让 PyCharm 感知你的 Docker 引擎远程解释器依赖 Docker因此首先要确保 PyCharm 能连接上 Docker 守护进程打开Settings Build, Execution, Deployment Docker在Linux上通常可以直接使用 Docker 的本地 socketunix:///var/run/docker.sockPyCharm 即可直接与宿主机 Docker 通信在Windows 或 Mac上需要先确保安装了 docker-machine然后点击Import credentials from Docker Machine由 PyCharm 自动读取机器凭据完成连接。这一步的配置是否成功决定了后续所有远程解释器能否创建如果此处连接失败后面添加解释器时会直接报错。第二步认识仓库预置的 Run/Debug Configurations本项目的一个便利之处在于仓库里已经预置了一套面向 Docker 的运行/调试配置Run/Debug Configurations存放于生成项目的.idea/runConfigurations/目录。打开 PyCharm 右上角的下拉框即可看到其中包括runserverDjango server 类型对应python manage.py runserverrunserver_plus对应带 Werkzeug 增强的开发服务器migrateDjango 迁移命令内部通过customRunCommandmigrate实现pytest: users与pytest针对users应用与全项目的 pytest 运行配置docker-compose up django、docker-compose up docsDocker Compose 部署型配置merge_production_dotenvs_in_dotenv合并生产环境变量文件的工具脚本从.idea/runConfigurations/runserver.xml可以看到这些配置的细节监听port8000、host0.0.0.0、环境变量DJANGO_SETTINGS_MODULEconfig.settings.local并且预先写好了路径映射$PROJECT_DIR$ - /app——这正是容器内的工作目录。刚打开项目时这些配置的图标上会带有一个红色 X见下图无法直接使用。这是因为它们依赖的远程 Python 解释器尚未创建——解释器指向容器内、但 PyCharm 此刻还无法解析这个目标。解决方式就是第三步。第三步添加基于 Docker Compose 的远程 Python 解释器这是整个配置过程的核心步骤打开Settings Build, Execution, Deployment Project Project Interpreter点击右上角的齿轮cog图标选择Add Remote进入远程解释器添加向导切换为Docker Compose模式Configuration file选择项目根目录下的docker-compose.local.ymlService name设置为django点击OK保存并关闭设置面板。这里选择docker-compose.local.yml与django服务不是随意的二者与仓库的编排定义严格对应在docker-compose.local.yml中django服务由.idea/runConfigurations对应的镜像构建而来build ./compose/local/django/Dockerfile该服务暴露8000:8000端口并挂载.:/app:z即宿主机项目目录映射为容器内/app——这就是runserver.xml中路径映射$PROJECT_DIR$ - /app的由来服务通过env_file加载./.envs/.local/.django与./.envs/.local/.postgresrequired: false启动命令为/start。而.idea/runConfigurations/../compose/local/django/start脚本的内容决定了容器启动后实际执行的进程先执行python manage.py migrate随后非 async 模式运行python manage.py runserver_plus 0.0.0.0:8000。PyCharm 通过 Docker Compose 远程解释器可以直接操控这个容器内的解释器来执行代码与调试。第四步等待容器构建并验证配置就绪点击OK关闭 Settings 后PyCharm 会开始与 Docker 交互拉取/构建镜像、启动django服务并初始化远程解释器底部状态栏会出现进度指示通常只需等待几十秒到几分钟取决于镜像是否已缓存。初始化完成后回到 Run/Debug Configurations 下拉框之前带红色 X 的配置会全部变为可用状态配置完成后可以做什么远程解释器就绪后预置配置直接覆盖了日常开发的高频场景运行与调试 Python 代码直接运行runserver/runserver_plus即可在容器内启动开发服务器并访问http://localhost:8000在任意 Python 文件、模板渲染路径上打断点PyCharm 会把调试会话代理进容器实现完整的断点、单步、变量监视体验。运行与调试测试pytest: users与pytest配置对应users应用及全项目的测试pytest --target ./{{cookiecutter.project_slug}}/users/之类的目标在 XML 中声明。可以直接在测试函数上打断点进入调试面板单步执行也可以在运行面板看到测试通过/失败汇总——例如仓库中的users应用测试覆盖了 models、forms、managers、views、admin 与 API见{{cookiecutter.project_slug}}/users/tests/。运行 Django 管理命令migrations 等migrate配置的本质是一个把customRunCommand设为migrate的 Django server 配置因此它不止能跑迁移把customRunCommand换成shell、createsuperuser、makemigrations等任何manage.py子命令即可在 IDE 里一键执行任意管理命令并同样支持调试。容器编排类配置docker-compose up django会启动django服务及其依赖PostgreSQL、Redis、Mailpit 等若选择了 Celery还会顺带启动celeryworker、celerybeat。docker-compose up docs则对应docker-compose.docs.yml用于在容器内构建并热重载项目文档。已知问题与规避方案PyCharm 卡在 Connecting to Debugger配置好断点并启动调试后调试工具窗口长时间停留在Connecting to Debugger而无响应见下图。原文档指出这多半是防火墙拦截了 PyCharm 与容器调试端口的通信所致对应 JetBrains YouTrack 工单 PY-18913 描述的同类问题。建议检查宿主机防火墙/安全软件对 Docker 端口与调试端口默认 8000 相关链路的放行规则必要时将项目目录加入信任列表。.idea目录中的文件被 PyCharm 修改为了让项目开箱即用仓库特意把.idea下的少量文件提交进了版本库例如{{cookiecutter.project_slug}}.iml、各个runConfigurations/*.xml。但添加远程解释器后PyCharm 会按你的机器环境改写其中部分文件比如解释器路径、.iml内容导致 Git 状态里出现一堆本不想提交的改动。{{cookiecutter.project_slug}}/.gitignore的 JetBrains 模板默认忽略workspace.xml、tasks.xml、dictionaries等高频变动文件同时保留上述开箱即用配置供 git 跟踪并在注释中给出了官方规避手段对个别不想再跟踪改动的文件执行$ git update-index --assume-unchanged {{cookiecutter.project_slug}}.iml这样 Git 会假定该文件未变更从而不再出现在git status中如果你后续确实要提交对它的修改可以用git update-index --no-assume-unchanged取消该标记。这是一种保留共享配置、忽略本地漂移的常见团队协作策略。小结Cookiecutter Django 把 PyCharm 的 Docker 远程调试做成了一条几乎全自动的路径仓库预置了 Docker 感知、远程解释器所需的编排文件docker-compose.local.yml与全套 Run/Debug Configurations.idea/runConfigurations/你只需在 IDE 里依次完成连接 Docker → Add Remote 选择 Docker Compose → 指向django服务三步即可获得容器内一致的运行与调试体验。配合对Connecting to Debugger与.idea漂移两个已知问题的处理这套工作流足以覆盖日常开发、测试与迁移维护的绝大多数场景。【免费下载链接】cookiecutter-djangoCookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.项目地址: https://gitcode.com/GitHub_Trending/co/cookiecutter-django创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表