Как устранить типичные проблемы с журналами Docker Compose
Если вы работаете с многоконтейнерной средой Docker и испытываете проблемы, журналы Docker Compose могут быть чрезвычайно полезны для устранения неполадок. Ниже приведено пошаговое руководство по устранению неполадок с журналами Docker Compose на реальном примере приложения Python Flask с базой данных PostgreSQL.
Предположим, ваш файл docker-compose.yml выглядит следующим образом:
version: "3"
services:
web:
build: .
command: python app.py
volumes:
- ".:/code"
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:11
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
Предположим, вы заметили, что ваше приложение не отвечает должным образом, и подозреваете, что возникла проблема с подключением к базе данных. Вы можете выполнить следующие шаги для отладки.
Проверьте журналы веб-службы
Сначала проверьте журналы веб-службы, на которой работает приложение. Если вы видите сообщение об ошибке, связанное с подключением к базе данных, например:
OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Это означает, что приложению не удаётся подключиться к базе данных.
Проверьте журналы службы базы данных
Затем проверьте журналы службы базы данных, чтобы увидеть, есть ли там какие-либо проблемы:
docker-compose logs db
Измените файл Docker Compose
Судя по сообщению об ошибке, вы, возможно, указали неверный пароль для пользователя PostgreSQL в файле docker-compose.yml. В этом случае вам придется исправить пароль и снова запустить docker-compose up.
Следите за журналами
Если у вас по-прежнему возникают проблемы, может оказаться полезным отслеживание журналов в режиме реального времени при взаимодействии с приложением. Вы можете сделать это с помощью опции -f или --follow:
docker-compose logs -f
Фильтруйте журналы
Вы можете фильтровать журналы с помощью grep, чтобы найти конкретную ошибку или сообщение. Например, чтобы найти записи журнала, содержащие слово error, вы можете запустить:
docker-compose logs web | grep error
Продолжение следует...
Перевод с некоторыми авторскими правками.