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

2024-04-19 04:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过在docker中的web服务的末尾添加stdin_open: truetty: true来调试我正在处理的dockerized python flask应用程序-合成.yml. 然后,在终端中运行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


Tags: keydockerawswebtrue终端flaskaccess