Я отлаживаю приложение dockerized python-flask, над которым работаю, добавив stdin_open: true
и tty: true
в конец веб-службы в docker-compose.yml. Затем я запускаю docker attach в терминале и использую полученное приглашение pdb.
Это всегда работало в прошлом. Сегодня, когда я набираю docker attach <web_container_id>
в терминале, терминал остается пустым, и приглашение pdb не открывается. Кроме того, сайт зависает и не загружается. Когда я запускаю docker logs <web_container_id>
, журналы показывают, что отладчик был активен. Но я не могу получить доступ к приглашению pdb. Есть идеи, что я делаю не так?
TLDR: почему я не могу взаимодействовать с приглашением 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
- Присоединение отладчика Python