chore(forgejo): ограничить размер json-лога контейнера #3587

Merged
bot-backend merged 1 commit from chore/forgejo-log-cap into main 2026-09-17 13:08:16 +00:00
Owner

Summary

Замер 17.09 на Beget: /var/lib/docker/containers занимает 3.4 ГБ, из них 3.35 ГиБ — один файл, лог контейнера forgejo. Контейнер создан 25.08, то есть ~150 МБ в сутки без единой ротации.

Драйвер json-file не ротирует ничего, пока ему явно не заданы опции, а глобального /etc/docker/daemon.json на этой VM нет вообще (проверено — файла не существует). Остальные логи на хосте на два порядка меньше: couchdb 19 МБ, forgejo-runner 3-6 МБ каждый. У garmin-mcp лимит уже стоит.

50m x 3 = жёсткий потолок 150 МБ на контейнер.

Почему именно здесь, а не в daemon.json

Глобальный лимит потребовал бы перезапуска демона Docker, то есть короткой остановки всего стека на Beget. Опция уровня сервиса применяется при пересоздании контейнера — а его всё равно надо пересоздать, чтобы подхватились настройки хранения из #3543. Один пересозданный контейнер закрывает 98% проблемы без остановки остального.

Глобальный daemon.json остаётся отдельной задачей под окно обслуживания.

Test plan

  • YAML парсится, services.forgejo.logging = {driver: json-file, options: {max-size: 50m, max-file: 3}}
  • Manual: scp + docker compose up -d --force-recreate forgejo, затем docker inspect --format '{{.HostConfig.LogConfig.Config}}' forgejo показывает лимиты, а du -sh /var/lib/docker/containers падает примерно на 3.3 ГБ

🤖 Generated with Claude Code

https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG

## Summary Замер 17.09 на Beget: `/var/lib/docker/containers` занимает 3.4 ГБ, из них 3.35 ГиБ — один файл, лог контейнера `forgejo`. Контейнер создан 25.08, то есть ~150 МБ в сутки без единой ротации. Драйвер `json-file` не ротирует ничего, пока ему явно не заданы опции, а глобального `/etc/docker/daemon.json` на этой VM нет вообще (проверено — файла не существует). Остальные логи на хосте на два порядка меньше: couchdb 19 МБ, forgejo-runner 3-6 МБ каждый. У `garmin-mcp` лимит уже стоит. `50m` x `3` = жёсткий потолок 150 МБ на контейнер. ## Почему именно здесь, а не в daemon.json Глобальный лимит потребовал бы перезапуска демона Docker, то есть короткой остановки всего стека на Beget. Опция уровня сервиса применяется при пересоздании контейнера — а его всё равно надо пересоздать, чтобы подхватились настройки хранения из #3543. Один пересозданный контейнер закрывает 98% проблемы без остановки остального. Глобальный `daemon.json` остаётся отдельной задачей под окно обслуживания. ## Test plan - [x] YAML парсится, `services.forgejo.logging` = `{driver: json-file, options: {max-size: 50m, max-file: 3}}` - [ ] Manual: `scp` + `docker compose up -d --force-recreate forgejo`, затем `docker inspect --format '{{.HostConfig.LogConfig.Config}}' forgejo` показывает лимиты, а `du -sh /var/lib/docker/containers` падает примерно на 3.3 ГБ 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG
lekss361 added 1 commit 2026-09-17 13:00:07 +00:00
chore(forgejo): ограничить размер json-лога контейнера
All checks were successful
CI Trade-In / changes (pull_request) Successful in 12s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 16s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m56s
CI / backend-tests (pull_request) Successful in 7m11s
6f67ed3737
Лог контейнера forgejo дорос до 3.35 ГиБ за 23 дня (~150 МБ/сутки) —
крупнейший файл логов на хосте, на два порядка больше любого другого.
Драйвер json-file не ротирует ничего без явных опций, а глобального
/etc/docker/daemon.json на этой VM нет вообще.

50m x 3 = потолок 150 МБ. Пересоздание контейнера при применении
настроек заодно удаляет старый безлимитный файл.
bot-backend merged commit 1265e69412 into main 2026-09-17 13:08:16 +00:00
bot-backend deleted branch chore/forgejo-log-cap 2026-09-17 13:08:17 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3587
No description provided.