perf: improve compression reliability and deployment safety
This commit is contained in:
@@ -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
|
||||
|
||||
# 可选:MinIO(S3 兼容,本地开发更接近生产)
|
||||
# 规划:接入 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user