我有一个django rest framework应用程序,socket.io在docker中运行,使用gunicorn作为WSGI服务器。下面是应用程序如何在docker-compose中运行:
web:
build:
context: .
command:
- gunicorn
- my_app.wsgi:application
ports:
- "8000:8000"
我想用PyCharm专业版在docker内部调试它(使用断点、逐步执行和变量监视)。我已经将Python解释器设置为来自docker-compose的远程解释器:
接下来要做什么来调试应用程序?重要的是它是由gunicorn运行的,以及我使用的定制工人,我想调试以及。
1条答案
按热度按时间qojgxg4l1#
调试使用Gunicorn和PyCharm运行的Docker应用程序可以通过以下步骤完成:
在PyCharm中设置调试配置:
打开Run菜单,选择“Edit Configurations...",点击“+”按钮添加新的配置。从选项列表中选择“Python Remote Debug”,并给予它一个名称。在“Host”字段中,输入Docker主机的IP地址,在“Port”字段中,指定一个开放的、可访问的端口号。默认值通常为localhost:'1234'。
更新您的Gunicorn命令行以包含“--worker-class”选项:
'--worker-class'选项用于指定Gunicorn应该使用的工作类的类型。
将“--worker-class=egg:gunicorn#gevent”添加到Gunicorn命令行以指定gevent辅助类。此辅助类与PyCharm调试器兼容。
使用“--worker-class”选项在Docker容器中启动Gunicorn服务器:
例如,下面的命令将启动Gunicorn,其中包含4个工作进程,监听端口8000:gunicorn --工人4 --工人阶级的蛋:gunicorn#gevent -B 0.0.0.0:8000 my_app:app
在PyCharm中启动调试器:
在PyCharm中,选择您在步骤1中创建的调试配置,然后单击“Debug”按钮。PyCharm将连接到运行在Docker容器中的远程调试器,并等待传入的连接。
在Docker容器中执行代码:
在浏览器中或通过API调用访问应用程序,这将触发代码的执行。PyCharm将自动在您设置的任何断点处停止,并允许您单步执行代码、检查变量等
注:上述步骤假定PyCharm示例和Docker容器在同一主机上运行。如果Docker容器在远程主机上运行,则需要确保可以从PyCharm示例访问远程主机,并且在PyCharm调试配置中指定了正确的IP地址和端口。