Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用IDE调试Docker上的Django_Django_Docker_Vagrant_Python 3.4 - Fatal编程技术网

用IDE调试Docker上的Django

用IDE调试Docker上的Django,django,docker,vagrant,python-3.4,Django,Docker,Vagrant,Python 3.4,目前我有相当多的Docker堆栈,由许多容器编译而成,其中一个容器正在运行Django实例 目前,我仅限于通过导入日志和使用 logger = logging.getLogger(__name__) logger.debug("your variable: " + variableName) 这是完全低效的,每次我想重新评估更改时都需要重新构建docker堆栈 我习惯于在Komodo中工作,并拥有一个健壮的、可步进的调试器供我使用,但我似乎找不到任何文档,说明如何将流浪VM中的Docker容器

目前我有相当多的Docker堆栈,由许多容器编译而成,其中一个容器正在运行Django实例

目前,我仅限于通过导入日志和使用

logger = logging.getLogger(__name__)
logger.debug("your variable: " + variableName)
这是完全低效的,每次我想重新评估更改时都需要重新构建docker堆栈

我习惯于在Komodo中工作,并拥有一个健壮的、可步进的调试器供我使用,但我似乎找不到任何文档,说明如何将流浪VM中的Docker容器连接到IDE或命令行调试器,从而让我无需重建即可逐步完成代码


如何将调试IDE连接到Vagrant VM中的docker容器?谢谢。

我建议您使用Docker Compose来处理和链接您的容器。我还在我的dev env上使用一个Docker堆栈和一个用于 -德扬戈 -博士后 -nginx

您只需将代码与docker容器中的代码同步。为此,请在docker compose文件中使用volumes命令。下面是一个示例,包含两个容器django和postgres:

db: 图片:博士后 网状物: 生成:。 命令:python manage.py runserver 0.0.0.0:8000 卷数: -.:/webapp 端口: - 8000:8000 链接: -分贝 这部分代码将执行您想要的操作。你所有的项目。将与docker容器的/webapp文件夹同步,无需重建docker映像:

然后,为了调试,我建议您使用pdb,在我看来,这是调试django应用程序的最佳方式,请运行:

docker-compose -f [path/to/your/docker-compose.yml] --service-ports  [name-of-your-django-container] python manage.py runserver
例如:

docker-compose -f django_project/docker-compose.yml --service-ports django python manage.py runserver
让我们调试一个视图: 1.在视图中导入pdb:导入pdb 2.在视图中的方法或类中添加pdb.set_跟踪 3.请求正确的url 您将能够通过终端进行调试 你应该有这样的东西:

Pdb>/webapp/car/views.py18get ->对于serializer.data中的汽车:
下面是Docker提供的使用Compose和Django的教程:

我没有使用Docker,但据我所知,它只是一个chroot系统。您可以在调试模式下运行python代码,并使用debbugert远程连接到它。这就是我正在做的。问题是如何从一个可单步执行代码到调试/测试的IDE开发。我已经更新了我的答案。这就是我在docker容器中使用pdb调试Django项目的方式。我使用的是IntelliJ IDEA 15,由于代码没有在您的机器上执行,我认为您不能使用IDE的断点功能。我认为,这不是您正在做的事情,因为我正在这样做,并且我不需要重建容器。我可以通过我的IDE终端进行实时测试/调试。我在你的设置中没有看到任何关于Vagrant的内容——这就是为什么我建议你使用Vagrant作为Docker的主机。
docker-compose -f django_project/docker-compose.yml --service-ports django python manage.py runserver