我通过在docker-compose.yml网络服务的末尾添加stdin_open: true
和tty: 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