← Назад к «Docker и образы»

Docker и образы LSUS

Обзор Docker-образов и контейнеров серверных ролей LSUS: что входит в каждый образ, на чём он построен и какие ключевые компоненты содержит. Полный дамп пакетов apt/pip/системных по каждому образу (для аудита безопасности и совместимости) — в артефакте docker/images/packages-report.md комплекта поставки.

Пошаговая установка — Развёртывание серверов. Справочник портов, контейнеров и переменных окружения — в Справочнике.

Образы

Все образы имеют тег ${LSUS_VERSION} (значение из docker/images/VERSION или lsus-server/VERSION) и pull_policy: never — берутся из загруженных локально, не из registry.

Образ Базовый образ Роли (контейнеры)
lsus-postgres postgres:15-bookworm (Debian 12) PostgreSQL 15 — общая СУБД для всех ролей на хосте
lsus-master Debian 12 Bookworm Slim lsus-master, lsus-master-worker, lsus-master-replication
lsus-site Debian 12 Bookworm Slim lsus-site, lsus-site-replication
lsus-edge Debian 12 Bookworm Slim lsus-edge
lsus-pgbouncer lsus-pgbouncer (Master), lsus-site-pgbouncer (Site)
lsus-nginx lsus-nginx (Master), lsus-site-nginx (Site), lsus-edge-nginx (Edge)

Приложение в образах ролей работает на Python 3.11.2 (Debian Bookworm).

Контейнеры по ролям

Роль Контейнеры Профиль compose
Master lsus-postgres, lsus-pgbouncer, lsus-master, lsus-master-worker, lsus-master-replication, lsus-nginx master
Site lsus-postgres, lsus-site-pgbouncer, lsus-site, lsus-site-replication, lsus-site-nginx site
Edge lsus-postgres, lsus-edge, lsus-edge-nginx edge

Подробное описание назначения каждого контейнера — в Справочнике.

Сетевая модель

warningnetwork_mode: host

Все контейнеры запускаются с network_mode: host — без проброса портов. Контейнеры слушают порты напрямую на интерфейсах хоста. Внутренние порты (PostgreSQL, PgBouncer, loopback-порты приложения) слушаются только на 127.0.0.1 и наружу не торчат. Подробнее — в Справочнике портов.

Все контейнеры используют общий лимит файловых дескрипторов: nofile soft/hard 65536 — защита от EMFILE при тысячах клиентов.

Ключевые компоненты образов

Образы ролей (lsus-master, lsus-site, lsus-edge) построены на Debian Bookworm Slim и содержат серверное приложение на Python. Основные компоненты:

Компонент Назначение
Flask 3.0 Веб-фреймворк (админка + API)
SQLAlchemy 2.0 ORM, работа с PostgreSQL
psycopg2-binary Драйвер PostgreSQL
APScheduler Фоновые задачи и расписание (worker)
gunicorn WSGI-сервер приложения
ldap3 Интеграция с LDAP
gssapi Интеграция с Kerberos
PGPy Работа с PGP-подписями пакетов
pydpkg Парсинг Debian-пакетов
rpm-vercmp Сравнение версий RPM
croniter Разбор cron-выражений (расписание)
zstandard Сжатие Zstandard

Образ lsus-postgres построен на postgres:15-bookworm и содержит PostgreSQL 15 со startup-автотюнингом: при старте контейнер рассчитывает max_connections, shared_buffers, effective_cache_size, work_mem и параметры WAL/checkpoint из доступной памяти (40% RAM резервируется под ОС, остальное — под PostgreSQL). Значения можно переопределить через LSUS_PG_* в .env.

Проверить применённые параметры:

sudo bash /opt/lsus-docker/scripts/check-postgres-tuning.sh

Каталоги данных

Данные хранятся в DATA_DIR (по умолчанию /opt/lsus-docker/data/):

/opt/lsus-docker/data/
├── postgres/        # данные PostgreSQL
├── master/          # repos, kb-cache, kb-storages, data, log
├── site/            # repos, data, log
└── edge/            # storage, data, log

Подробная структура каталогов и вынос данных на отдельный диск — в Справочнике.

Полный отчёт по пакетам

Полный дамп пакетов apt, pip и системных для каждого образа (с версиями и описаниями) генерируется скриптом gen-packages-report.sh и сохраняется в:

docker/images/packages-report.md

Этот артефакт предназначен для аудита безопасности, проверки совместимости зависимостей и расследования уязвимостей. В wiki он не включается из-за объёма (~800 строк сырого справочника).

lightbulbСовет

Для генерации свежего отчёта выполните gen-packages-report.sh из каталога docker/ комплекта поставки — отчёт строится по фактически собранным образам.

Связанные страницы