Docker Compose для домашнего сервера: что я понял за год

Год назад у меня на домашнем сервере было с десяток контейнеров, запущенных руками через docker run. Восстановить это после переустановки системы было отдельным квестом. Теперь всё описано в compose-файлах, и вот что из этого вышло.

Один сервис — одна папка

Каждый сервис живёт в своей папке: compose.yaml, .env и данные рядом. Бэкап и перенос — это просто скопировать папку.

~/services/
  jellyfin/
    compose.yaml
    .env
    config/
  paperless/
    compose.yaml
    ...

Фиксировать версии образов

Тег latest однажды сломал мне Paperless посреди недели. С тех пор версии только явные, обновляю раз в месяц и читаю changelog.

Healthcheck везде, где можно

Без него depends_on почти бесполезен: база ещё стартует, а приложение уже падает с ошибкой подключения.

Пока это всё. Следующий шаг — наконец настроить нормальный мониторинг вместо «зайти и посмотреть».