perf: improve compression reliability and deployment safety

This commit is contained in:
237899745
2026-07-25 10:29:49 +08:00
parent 06220ca921
commit 9d7668bdee
34 changed files with 1391 additions and 1042 deletions

View File

@@ -20,6 +20,7 @@ sudo apt install -y \
libssl-dev \
libpq-dev \
cmake \
libdav1d-dev \
nasm \
libjpeg-dev \
libpng-dev \
@@ -71,7 +72,7 @@ services:
volumes:
- redis_data:/data
# 可选MinIOS3 兼容,本地开发更接近生产)
# 规划:接入 S3 存储后可增加 MinIO当前版本仅支持本地存储
# minio:
# image: minio/minio:RELEASE.2024-01-28T20-20-01Z
# command: server /data --console-address ":9001"
@@ -116,6 +117,12 @@ REDIS_URL=redis://localhost:6379
# Worker 并发(每个批量任务内同时处理的文件数)
WORKER_CONCURRENCY=4
# 图片处理全局并发(每个 API/Worker 进程)
IMAGE_PROCESSING_CONCURRENCY=4
# 仅在后端端口不对公网开放、请求必经可信代理时启用
TRUST_PROXY_HEADERS=false
# JWT网站/管理后台)
JWT_SECRET=your-super-secret-key-change-in-production
JWT_EXPIRY_HOURS=168
@@ -123,18 +130,9 @@ JWT_EXPIRY_HOURS=168
# API Key
API_KEY_PEPPER=please-change-this-in-production
# 存储(生产建议 S3/MinIO + 预签名 URL
STORAGE_TYPE=local # local | s3
# 存储(当前实现仅支持 local
STORAGE_TYPE=local
STORAGE_PATH=./uploads
# 预签名下载链接过期(分钟)
SIGNED_URL_TTL_MINUTES=60
# S3 配置(如果使用 S3/MinIO
# S3_ENDPOINT=http://localhost:9000
# S3_BUCKET=your-bucket
# S3_REGION=us-east-1
# S3_ACCESS_KEY=xxx
# S3_SECRET_KEY=xxx
# 计费已确认Stripe
BILLING_PROVIDER=stripe
@@ -159,10 +157,7 @@ ADMIN_PASSWORD=changeme123
### 3. 初始化数据库
```bash
# 运行首期迁移(可重复执行)
psql "$DATABASE_URL" -f migrations/001_init.sql
```
API 或 Worker 启动时会通过 SQLx 自动、顺序执行 `migrations/` 下尚未应用的迁移。迁移失败时进程会退出,不会在不完整的数据库结构上继续提供服务。
### 4. 启动开发服务器
@@ -211,6 +206,7 @@ services:
dockerfile: docker/Dockerfile
environment:
- IMAGEFORGE_ROLE=api
- TRUST_PROXY_HEADERS=true
- BILLING_PROVIDER=stripe
- PUBLIC_BASE_URL=https://your-domain.com
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}
@@ -218,10 +214,11 @@ services:
- DATABASE_URL=postgres://imageforge:${DB_PASSWORD}@postgres:5432/imageforge
- REDIS_URL=redis://redis:6379
- JWT_SECRET=${JWT_SECRET}
- API_KEY_PEPPER=${API_KEY_PEPPER}
- STORAGE_TYPE=local
- STORAGE_PATH=/app/uploads
ports:
- "8080:8080"
expose:
- "8080"
volumes:
- uploads:/app/uploads
depends_on:
@@ -238,6 +235,7 @@ services:
- DATABASE_URL=postgres://imageforge:${DB_PASSWORD}@postgres:5432/imageforge
- REDIS_URL=redis://redis:6379
- JWT_SECRET=${JWT_SECRET}
- API_KEY_PEPPER=${API_KEY_PEPPER}
- STORAGE_TYPE=local
- STORAGE_PATH=/app/uploads
volumes:
@@ -289,6 +287,7 @@ WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
cmake \
libdav1d-dev \
nasm \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
@@ -314,6 +313,7 @@ FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libdav1d6 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
@@ -397,7 +397,7 @@ http {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}