附加到我需要调试的Docker容器时无法访问pdb提示

时间:2019-03-28 21:40:34

标签: python docker debugging flask pdb

我通过在docker-compose.yml网络服务的末尾添加stdin_open: truetty: true来调试正在使用的dockerized python-flask应用。然后,我在终端中运行docker attach并使用生成的pdb提示符。

这在过去一直有效。今天,当我在终端中输入docker attach <web_container_id>时,终端保持空白,并且pdb提示没有打开。此外,该网站挂起且无法加载。当我运行docker logs <web_container_id>时,日志显示调试器处于活动状态。但是我无法访问pdb提示符。知道我在做什么错吗?

TLDR:当我附加到Docker容器时,为什么不能与终端中的pdb提示进行交互?

version: "3"

services:
 db:
   restart: always
   image: postgres:latest
   environment:
     POSTGRES_USER: fake_user
     POSTGRES_PASSWORD: fakepassword
     POSTGRES_DB: fake-db
   volumes:
     - ./container_data/postgres:/var/lib/postgresql/data
   ports:
     - "8080:8080"

 web:
   restart: always
   build:
      context: .
      dockerfile: ./dockerfiles/web/Dockerfile
   environment:
     AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
     AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
     AWS_DEFAULT_REGION: "${AWS_DEFAULT_REGION}"
     S3_BUCKET_NAME: "${S3_BUCKET_NAME}"
     FLASK_APP: app
     FLASK_ENV: "${FLASK_ENV:-development}"
   volumes:
     - ./FakeApp/:/usr/src/app/FakeApp/:z
   links:
     - postgres:postgres
   expose:
     - "3000"
   command: flask run --host=0.0.0.0 --port=3000 
   ports:
     - "3000:3000"
   tty: true
   stdin_open: true

以下是我已经在线阅读的一些资源: -https://blog.lucasferreira.org/howto/2017/06/03/running-pdb-with-docker-and-gunicorn.html -Attaching Python debugger

0 个答案:

没有答案