将 pdb 与主管一起使用
Using pdb with supervisor
我正在 运行 使用 docker compose
安装我的 Django 应用程序。 Ngninx
和 gunicorn
通过 supervisor
是 运行。
但是我似乎无法弄清楚如何使用 pdb
进行调试。当我使用:
import pdb
pdb.set_trace()
在 运行 命令 docker-compose up
之后,我的应用程序和数据库开始 运行 并且终端屏幕保持活动状态,等待进一步的输出显示。
当我的代码到达pdb.set_trace()
时,上述终端保持原样,但(pdb)
界面没有出现。
有人知道我如何使用 pdb
调试我的应用程序吗?我还需要使用其他东西吗?
谢谢。
更新
docker-compose.yml
version: '3'
services:
db:
image: mysql/mysql-server:latest
container_name: my_container_name
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: "mydb"
MYSQL_USER: "myusername"
MYSQL_PASSWORD: "mypass"
MYSQL_ROOT_PASSWORD: "mypass"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
command: mysqld
web:
build: .
container_name: my_container_name
ports:
- "9000:9000"
depends_on:
- db
supervisord.conf
[supervisord]
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx
[program:djangoserver]
command=python /myapp/djangorest/manage.py runserver localhost:8000
stdin_open: true
tty: true
如果你想调试,那么你将不得不把 gunicorn 从图片中取出并使用 django manage.py runserver
直接启动 django。
Gunicorn 将在后台启动线程或进程,很难附加到它们的标准输入。因此,您希望主 PID 1 具有标准输入并附加到同一标准输入。您需要更改 docker-compose.yml
并将以下参数添加到您的 django 服务
command: python manage.py runserver 0.0.0.0:8000
stdin_open: true
tty: true
然后 docker-compose
不允许连接到标准输入,因此您需要在分离模式下启动它
docker-compose up -d
之后你想直接使用docker
连接到django容器
docker attach <project>_<djangocontainername>_1
然后当你调试 (pdb)
终端时会显示
我正在 运行 使用 docker compose
安装我的 Django 应用程序。 Ngninx
和 gunicorn
通过 supervisor
是 运行。
但是我似乎无法弄清楚如何使用 pdb
进行调试。当我使用:
import pdb
pdb.set_trace()
在 运行 命令 docker-compose up
之后,我的应用程序和数据库开始 运行 并且终端屏幕保持活动状态,等待进一步的输出显示。
当我的代码到达pdb.set_trace()
时,上述终端保持原样,但(pdb)
界面没有出现。
有人知道我如何使用 pdb
调试我的应用程序吗?我还需要使用其他东西吗?
谢谢。
更新
docker-compose.yml
version: '3'
services:
db:
image: mysql/mysql-server:latest
container_name: my_container_name
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: "mydb"
MYSQL_USER: "myusername"
MYSQL_PASSWORD: "mypass"
MYSQL_ROOT_PASSWORD: "mypass"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
command: mysqld
web:
build: .
container_name: my_container_name
ports:
- "9000:9000"
depends_on:
- db
supervisord.conf
[supervisord]
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx
[program:djangoserver]
command=python /myapp/djangorest/manage.py runserver localhost:8000
stdin_open: true
tty: true
如果你想调试,那么你将不得不把 gunicorn 从图片中取出并使用 django manage.py runserver
直接启动 django。
Gunicorn 将在后台启动线程或进程,很难附加到它们的标准输入。因此,您希望主 PID 1 具有标准输入并附加到同一标准输入。您需要更改 docker-compose.yml
并将以下参数添加到您的 django 服务
command: python manage.py runserver 0.0.0.0:8000
stdin_open: true
tty: true
然后 docker-compose
不允许连接到标准输入,因此您需要在分离模式下启动它
docker-compose up -d
之后你想直接使用docker
连接到django容器
docker attach <project>_<djangocontainername>_1
然后当你调试 (pdb)
终端时会显示