Docker-编写和 pdb

Docker-compose and pdb

我知道我不是第一个问这个问题的人,但没有明确的答案:

如何在 Python 开发中使用带有 docker-composer 的 pdb?

当你向 Google 叔叔询问 django docker 时,你会得到很棒的 docker-作曲家示例和教程,而且我有一个工作环境 - 我可以 运行 docker-compose up 并且我有一个整洁的开发环境 但 PDB 不工作 (这很可悲)。

我可以使用 运行ning docker-compose run my-awesome-app python app.py 0.0.0.0:8000 解决,但随后我可以通过 http://127.0.0.1:8000 从主机访问我的应用程序(我可以使用 docker-compose up)并且看起来每次我使用 run 时,新容器都会被制作成:dir_app_13dir_db_4,这是我根本不想要的。

请好心人助我一臂之力

PS
我在该示例中使用 pdb++,并使用来自 this django example. Also I experimented but nothing seems to help me. And I'm using docker-composer 1.3.0rc3 的基本 docker-compose.yml,因为它具有 Dockerfile 指向支持。

尝试 运行 使用 --service-ports 选项的 Web 容器:docker-compose run --service-ports web

使用以下步骤将 pdb 附加到任何 python 脚本。

第 1 步。在您的 yml 文件中添加以下内容

stdin_open: true
tty: true

这将启用交互模式并附加标准输入。这等同于 -it 模式。

第 2 步

docker attach <generated_containerid>

您现在将获得 pdb shell

根据我的经验,docker-compose up 命令不提供交互式 shell,但它启动打印 STDOUT 为默认只读 shell。

或者如果您指定并映射了日志目录,docker-compose up 命令将不会在附加的 shell 上打印任何内容,但它会将输出发送到您映射的日志。所以一旦它是 运行.

你必须单独附加容器

当您执行 docker-compose up 时,通过 -d 使其处于分离模式并通过

连接到容器

docker exec -it your_container_name bash