UGLYPEAR AI обновил бизнес: высокопроизводительное сжатие документов × RAG-платформа инженерии данныхУзнать о новом направлении →

Развёртывание сервиса сжатия в Docker: практика SmartSlim Server

Главный вывод: развёртывание SmartSlim Server через Docker состоит из четырёх шагов — собрать образ, написать docker-compose.yml, запустить сервис, проверить health check. Размер образа около 450 МБ, минимальные требования — 2 ядра CPU и 4 ГБ ОЗУ, после запуска health check проходит за 5 секунд. В рабочей среде требуется настроить тома для постоянного хранения данных, обратный прокси Nginx, сбор логов и регулярное резервное копирование. В этой статье — полный файл docker-compose.yml, таблица переменных окружения и подробное описание шагов развёртывания. Ниже — обзор архитектуры и пошаговое выполнение промышленного развёртывания.

Если вам нужно понять, как вызывать API сжатия после развёртывания в Docker, рекомендуется сначала прочитать Практическое руководство по вызову API сжатия: подробная документация RESTful-интерфейса.

1. Архитектура развёртывания Docker

Развёртывание SmartSlim Server через Docker использует архитектуру с одним контейнером, внутри которого работает FastAPI-приложение; файлы и конфигурации сохраняются через Docker-тома, сервис предоставляется наружу через проброс портов. В рабочей среде добавляется слой обратного прокси Nginx для терминирования TLS и балансировки нагрузки.

КомпонентТехнологияНазначениеПорт
Контейнер SmartSlimPython 3.9 + FastAPIЯдро сервиса сжатия8000 (внутр.)
Контейнер NginxNginx 1.25Обратный прокси / TLS80/443 (внешн.)
Том dataDocker VolumeХранение сжатых файлов
Том logsDocker VolumeФайлы журналов
Том configDocker VolumeКонфигурация и лицензия

Перед развёртыванием убедитесь, что сервер соответствует минимальным требованиям. В таблице ниже — рекомендации по конфигурации для разной нагрузки.

МасштабCPUПамятьДискПараллелизмСценарий
Минимальный2 ядра4 ГБ20 ГБ4Тест / небольшая команда
Рекомендуемый4 ядра8 ГБ50 ГБ8Средняя компания
Высокая нагрузка8 ядер16 ГБ100 ГБ16Крупное предприятие
Кластер4 ядра × 3 узла8 ГБ × 3Общее хранилище24+Промышленная высокая доступность

2. Подробности конфигурации docker-compose.yml

Ниже — ключевая часть docker-compose.yml для рабочей среды, включая сервис SmartSlim, обратный прокси Nginx, тома и сеть.

ПараметрОписаниеПример
imageИмя образаuglypear/smartslim-server:latest
restartПолитика перезапускаalways (для прода)
portsПроброс портов8000:8000
volumesМонтирование томов./data:/app/data
environmentПеременные окруженияSMARTSLIM_LICENSE=xxx
healthcheckПроверка здоровьяcurl -f http://localhost:8000/health
depends_onЗависимостиnginx
deploy.resourcesЛимиты ресурсовcpus:4, memory:8G

3. Таблица переменных окружения

SmartSlim Server настраивается через переменные окружения; в таблице ниже перечислены все доступные параметры.

ПеременнаяОбяз.По умолчаниюОписание
SMARTSLIM_LICENSEДаЛицензионный ключ
SMARTSLIM_HOSTНет0.0.0.0Адрес прослушивания
SMARTSLIM_PORTНет8000Порт прослушивания
SMARTSLIM_WORKERSНет4Количество рабочих процессов
SMARTSLIM_MAX_FILE_SIZEНет1073741824Макс. размер одного файла (1 ГБ)
SMARTSLIM_SECURITY_LEVELНетMEDIUMУровень безопасности
SMARTSLIM_RATE_LIMITНет60Лимит запросов в минуту
SMARTSLIM_LOG_LEVELНетINFOУровень логирования
SMARTSLIM_TEMP_DIRНет/app/data/tmpКаталог временных файлов

4. Пошаговое развёртывание

Развёртывание в Docker состоит из четырёх шагов: сборка, запуск, проверка, мониторинг. В таблице ниже — операции и методы проверки для каждого шага.

ШагДействиеКомандаПроверка
1. Сборка образаСобрать образ SmartSlimdocker build -t smartslim-server .docker images
2. КонфигурацияНаписать docker-compose.ymlРедактировать yml-файлdocker-compose config
3. ЗапускЗапустить все контейнерыdocker-compose up -ddocker-compose ps
4. Health checkПроверить доступностьcurl http://localhost:8000/healthВозврат {"status":"ok"}
5. Настройка NginxНастроить обратный проксиРедактировать nginx.confcurl https://домен/health
6. МониторингНастроить логи и мониторингНастроить сбор логовdocker logs

5. Лучшие практики для рабочей среды

При развёртывании в рабочей среде необходимо уделить внимание четырём аспектам: health check, сбор логов, резервное копирование данных и усиление безопасности. В таблице ниже — рекомендации по лучшим практикам.

ПрактикаРекомендацияЧастотаИнструмент
Health checkinterval:30s, timeout:10s, retries:3Реальное времяDocker healthcheck
Сбор логовдрайвер json-file, max-size:100m, max-file:5Реальное времяDocker logging
Резервное копированиеЕжедневно копировать том dataЕжедневноcron + docker run
БезопасностьЗапуск от non-root, ФС только для чтенияПри развёртыванииDocker security
Лимиты ресурсовcpus:4, memory:8G, порог алерта 80%Реальное времяDocker stats
Обновление образовРегулярный pull и rolling updateЕжемесячноdocker-compose pull

Пример полной конфигурации health check: interval = 30 секунд (проверка каждые 30 секунд), timeout = 10 секунд (при таймауте — сбой), retries = 3 (три неудачи подряд → статус unhealthy), start_period = 10 секунд (проверки начинаются через 10 секунд после старта). При такой конфигурации контейнер с аномалией будет обнаружен за 90 секунд и автоматически перезапущен.

МетрикаНормаАлертКоманда
Загрузка CPU0–60%>80%docker stats
Загрузка памяти0–70%>85%docker stats
Загрузка диска0–70%>85%df -h
Время ответа API0–2 с>5 сcurl -w
Длина очереди сжатия0–20>50API status
Доля ошибок0–0,1%>1%Анализ логов

Если хотите понять базовую архитектуру очереди задач сжатия, см. Проектирование очереди задач сжатия. Если предпочитаете локальную интеграцию через SDK вместо серверного развёртывания, см. Руководство по интеграции SDK сжатия.

6. Часто задаваемые вопросы (FAQ)

В1: Какие требования для развёртывания сервиса сжатия в Docker?

Минимальные требования для развёртывания SmartSlim Server в Docker: 2 ядра CPU, 4 ГБ ОЗУ, 20 ГБ диска; рекомендуемые — 4 ядра CPU, 8 ГБ ОЗУ, 50 ГБ диска. На ОС должен быть установлен Docker 20.10+ и Docker Compose 2.0+. Поддерживаются архитектуры x86_64 и ARM64, размер образа около 450 МБ. В рабочей среде рекомендуется оставить дополнительное место на диске под временные файлы сжатия.

В2: Как обновлять сервис сжатия, развёрнутый в Docker?

Процесс обновления состоит из трёх шагов: 1) docker-compose pull — загрузить свежий образ; 2) docker-compose up -d — перезапустить контейнеры (данные в томах сохраняются); 3) проверить эндпоинт health check и убедиться в нормальной работе. Перед обновлением рекомендуется сделать резервную копию тома (docker run --volumes-from для бэкапа). В среде Kubernetes возможно скользящее обновление без простоя. Совместимость между версиями хорошая, перед мажорным обновлением загляните в changelog.

В3: Как обеспечить постоянное хранение данных в сервисе Docker?

Постоянство данных обеспечивается через тома Docker. Нужно смонтировать три каталога: /app/data (сжатые файлы), /app/logs (журналы), /app/config (конфигурация и лицензионные ключи). В docker-compose.yml сопоставление хост↔контейнер описывается в поле volumes. Удаление контейнера не удаляет том — данные в безопасности. В рабочей среде рекомендуется выносить тома на отдельный диск или NAS для удобства резервного копирования и масштабирования.

В4: Поддерживает ли сервис сжатия в Docker развёртывание с высокой доступностью?

Серверная версия SmartSlim поддерживает развёртывание на одном узле в Docker, а сетевая версия — мультисервисный Docker Compose и Kubernetes для высокой доступности. В Kubernetes с помощью HPA (Horizontal Pod Autoscaler) реализуется эластичное масштабирование от 3 до 10 реплик, а общее хранилище (MinIO) и общая база данных (MySQL) обеспечивают stateless-архитектуру. На одиночном узле можно получить простую высокую доступность через Nginx-балансировку и несколько инстансов, но для продакшн рекомендуется сетевая версия со схемой K8s.

Итог

Развёртывание SmartSlim Server в Docker укладывается в четыре шага: собрать образ, написать docker-compose.yml, запустить сервис, проверить health check. Образ 450 МБ, минимум 2 ядра и 4 ГБ, health check проходит за 5 секунд после старта. 9 переменных окружения покрывают лицензирование, параллелизм, безопасность и лимиты запросов. Для рабочей среды — шесть лучших практик: health check каждые 30 секунд, ротация логов по 100 МБ, ежедневный бэкап данных, запуск от non-root, лимиты ресурсов 4 ядра / 8 ГБ, ежемесячное обновление образа.

Запомните три момента: во-первых, обязательно смонтируйте три тома (data/logs/config) — удаление контейнера не уничтожит данные; во-вторых, настройте health check с interval:30s и retries:3 — аномалия будет обнаружена за 90 секунд с автоперезапуском; в-третьих, в рабочей среде используйте Nginx как обратный прокси для терминирования TLS, не выставляйте порт 8000 напрямую. После развёртывания связка API сжатия и очереди задач образует полноценный сервис сжатия.

Нужно сжать файлы? Попробуйте SmartSlim

Собственный движок сжатия на Rust, поддержка PDF / изображений / видео / Office / OFD — более 40 форматов в 10 категориях, локальное сжатие — данные не покидают домен.