docs: 添加 README、Release 模板、docker-compose 编排、构建发布脚本
This commit is contained in:
@@ -1,24 +1,141 @@
|
||||
# CloudSearch — single source of truth: ./VERSION
|
||||
# 注意: 此 compose 用于参考/文档。实际部署使用 docker run 以兼容 1Panel Redis。
|
||||
# =============================================================================
|
||||
# CloudSearch · Docker Compose 部署编排
|
||||
# =============================================================================
|
||||
#
|
||||
# 双模式使用:
|
||||
#
|
||||
# 开发/测试模式(从源码构建):
|
||||
# docker compose up -d
|
||||
#
|
||||
# 生产模式(使用预构建镜像):
|
||||
# 1. 注释掉 services.app.build 段
|
||||
# 2. 取消注释 services.app.image 行
|
||||
# 3. docker compose up -d
|
||||
#
|
||||
# 构建并推送镜像到私有仓库:
|
||||
# ./scripts/build-and-push.sh v0.3.32
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
networks:
|
||||
cloudsearch-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
admin-data:
|
||||
app-data:
|
||||
external: true
|
||||
name: cloudsearch_app-data
|
||||
pansou-data:
|
||||
app-data: # 主应用数据(SQLite 数据库、上传文件)
|
||||
redis-data: # Redis 数据持久化
|
||||
pansou-data: # PanSou 缓存
|
||||
|
||||
# ── 日志轮转模板 ────────────────────────────────────────────────────────────
|
||||
x-logging: &default-logging
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "10"
|
||||
|
||||
# ── 服务定义 ────────────────────────────────────────────────────────────────
|
||||
services:
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
# CloudSearch 主应用 — Node.js + Express + TypeScript
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
app:
|
||||
container_name: CloudSearch_App
|
||||
|
||||
# ┌─ 开发模式:从源码构建 ──────────────────────────────────────────┐
|
||||
build:
|
||||
context: ./source_clean
|
||||
dockerfile: Dockerfile
|
||||
# └────────────────────────────────────────────────────────────────┘
|
||||
|
||||
# ┌─ 生产模式:使用预构建镜像(切换时取消注释下行,注释 build 段)───┐
|
||||
# image: gitea.timxx.cn/admin/cloudsearch:latest
|
||||
# image: gitea.timxx.cn/admin/cloudsearch:v0.3.32
|
||||
# └────────────────────────────────────────────────────────────────┘
|
||||
|
||||
ports:
|
||||
- "${PORT:-9527}:9527"
|
||||
|
||||
environment:
|
||||
# ── 核心 ──
|
||||
- NODE_ENV=${NODE_ENV:-production}
|
||||
- PORT=${PORT:-9527}
|
||||
- TZ=${TZ:-Asia/Shanghai}
|
||||
|
||||
# ── 安全 ──
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- COOKIE_ENCRYPTION_KEY=${COOKIE_ENCRYPTION_KEY:-}
|
||||
- CORS_ORIGIN=${CORS_ORIGIN}
|
||||
|
||||
# ── 数据库 & 缓存 ──
|
||||
- DB_PATH=${DB_PATH:-/data/database.sqlite}
|
||||
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
||||
|
||||
# ── 搜索服务 ──
|
||||
- PANSOU_URL=${PANSOU_URL:-http://pansou:80}
|
||||
- PANSOU_AUTH_TOKEN=${PANSOU_AUTH_TOKEN:-}
|
||||
|
||||
# ── 网盘校验 ──
|
||||
- VALIDATION_CONCURRENCY=${VALIDATION_CONCURRENCY:-10}
|
||||
- VALIDATION_TIMEOUT=${VALIDATION_TIMEOUT:-5000}
|
||||
- CACHE_TTL_VALID=${CACHE_TTL_VALID:-14400}
|
||||
- CACHE_TTL_INVALID=${CACHE_TTL_INVALID:-3600}
|
||||
|
||||
# ── 路径 ──
|
||||
- CHROMIUM_PATH=${CHROMIUM_PATH:-/usr/bin/chromium-browser}
|
||||
- APP_VERSION_FILE=${APP_VERSION_FILE:-/data/VERSION}
|
||||
- UPLOAD_DIR=${UPLOAD_DIR:-/app/uploads}
|
||||
|
||||
# ── 日志 ──
|
||||
- LOG_LEVEL=${LOG_LEVEL:-info}
|
||||
|
||||
volumes:
|
||||
- app-data:/data # 数据库
|
||||
- ./uploads:/app/uploads # 上传文件
|
||||
- ./VERSION:/app/VERSION # 版本文件
|
||||
- ./icons:/app/dist/frontend/admin/icons # 云盘图标
|
||||
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
pansou:
|
||||
condition: service_started
|
||||
|
||||
restart: always
|
||||
networks:
|
||||
- cloudsearch-network
|
||||
logging: *default-logging
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO-", "http://localhost:9527/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 20s
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
# Redis — 缓存 & 会话
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
redis:
|
||||
container_name: CloudSearch_Redis
|
||||
image: redis:7-alpine
|
||||
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
restart: always
|
||||
networks:
|
||||
- cloudsearch-network
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
# PanSou — 第三方搜索聚合
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
pansou:
|
||||
container_name: CloudSearch_PanSou
|
||||
image: ghcr.io/fish2018/pansou-web:latest
|
||||
@@ -33,48 +150,3 @@ services:
|
||||
- pansou-data:/app/data
|
||||
restart: always
|
||||
logging: *default-logging
|
||||
|
||||
app:
|
||||
container_name: CloudSearch_App
|
||||
image: cloudsearch-app:latest
|
||||
ports:
|
||||
- "9527:9527"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- CORS_ORIGIN=http://jp-cs.timaa.cn
|
||||
- JWT_SECRET=u-_1wB...JeIg
|
||||
- ADMIN_PASSWORD=0nL5kL...b25A
|
||||
- PANSOU_URL=http://pansou:80
|
||||
- DB_PATH=/data/database.sqlite
|
||||
- REDIS_URL=redis://:redis_GbR7XZ@1Panel-redis-aDp3:6379
|
||||
- CLOUDSEARCH_API=http://localhost:9527
|
||||
- TRANSFER_CONFIG_PATH=/data/transfer_config.json
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_VERSION_FILE=/data/VERSION
|
||||
volumes:
|
||||
- cloudsearch_app-data:/data
|
||||
- ./uploads:/app/uploads
|
||||
- ./VERSION:/app/VERSION
|
||||
- ./icons:/app/dist/frontend/admin/icons
|
||||
depends_on:
|
||||
- pansou
|
||||
restart: always
|
||||
networks:
|
||||
- cloudsearch-network
|
||||
logging: *default-logging
|
||||
|
||||
admin:
|
||||
container_name: CloudSearch_Admin
|
||||
image: cloudsearch-admin:v0.1.0
|
||||
ports:
|
||||
- "127.0.0.1:9531:9531"
|
||||
environment:
|
||||
- ADMIN_PORT=9531
|
||||
- ADMIN_PASSWORD=0nL5kL...b25A
|
||||
- ADMIN_DB_PATH=/data/admin_flags.sqlite
|
||||
volumes:
|
||||
- admin-data:/data
|
||||
restart: always
|
||||
networks:
|
||||
- cloudsearch-network
|
||||
logging: *default-logging
|
||||
|
||||
Reference in New Issue
Block a user