feat(storage): S3-совместимое хранилище файлов (SeaweedFS/MinIO) и миграция uploads
- storage.js: абстракция хранилища с драйверами local и s3 (AWS SDK v3), ключи объектов совпадают с текущими путями /uploads/<файл>, поэтому схема БД и URL не меняются - docker-compose.yml: сервис s3 (SeaweedFS, том s3-data, API только на loopback), переменные S3_*/STORAGE_*, restart unless-stopped для app и db - docker-compose.minio.yml: оверрайд S3-сервиса на MinIO (образ из своего зеркала) - server.js/worker.js: чтение и запись файлов только через storage (отдача /uploads/*, миниатюры, share-файлы, zip-отчёты, enhance/apply/rollback, photo-worker), автосоздание бакета, глобальная персистенция загрузок multer - бэкап/восстановление и scripts/backup.sh, restore.sh — через scripts/storage-sync.js - scripts/migrate-to-s3.js: идемпотентная миграция uploads/ в бакет (--dry-run, --verify-only, --delete-local) - админка: блок «Хранилище» в системной информации - .env.example, README.md, AGENTS.md: описание драйверов, переменных и перехода на S3
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# Переопределение S3-сервиса на MinIO.
|
||||
# Использование:
|
||||
# S3_IMAGE=minio/minio:RELEASE.2025-04-22T22-12-26Z \
|
||||
# docker compose -f docker-compose.yml -f docker-compose.minio.yml up -d s3
|
||||
#
|
||||
# Учтите: MinIO прекратил публикацию свободных образов (docker.io/minio/minio
|
||||
# удалён), поэтому образ нужно взять из доступного вам зеркала/архива и указать
|
||||
# его в S3_IMAGE.
|
||||
services:
|
||||
s3:
|
||||
image: ${S3_IMAGE:-minio/minio:latest}
|
||||
container_name: whatido-s3
|
||||
restart: unless-stopped
|
||||
command: server /data --console-address ":9001"
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${S3_ACCESS_KEY:-whatido}
|
||||
MINIO_ROOT_PASSWORD: ${S3_SECRET_KEY:-whatido-secret}
|
||||
MINIO_BROWSER: ${MINIO_BROWSER:-off}
|
||||
TZ: Europe/Moscow
|
||||
expose:
|
||||
- "9000"
|
||||
ports:
|
||||
- "127.0.0.1:9000:9000"
|
||||
- "127.0.0.1:9001:9001"
|
||||
volumes:
|
||||
- s3-data:/data
|
||||
Reference in New Issue
Block a user