name: cloudsearch services: # ==================== CloudSearch 主应用 ==================== app: image: gitea.timxx.cn/admin/cloudsearch:latest container_name: CloudSearch_App restart: unless-stopped ports: - "9527:9527" environment: # ── 必填 ── CORS_ORIGIN: "https://your-domain.com" # 改为你的域名 JWT_SECRET: "change-me-to-a-random-string" ADMIN_PASSWORD: "change-me" # ── 可选(有默认值)── LOG_LEVEL: "info" UPLOAD_DIR: "/app/data" APP_VERSION_FILE: "/app/VERSION" REDIS_URL: "redis://redis:6379" PANSOU_URL: "http://pansou:8888" PANSOU_AUTH_TOKEN: "" VALIDATION_CONCURRENCY: "10" VALIDATION_TIMEOUT: "5000" CACHE_TTL_VALID: "14400" CACHE_TTL_INVALID: "3600" volumes: - cloudsearch-data:/app/data depends_on: redis: condition: service_healthy pansou: condition: service_healthy networks: - cloudsearch-net # ==================== PanSou 搜索源 ==================== pansou: image: ghcr.io/fish2018/pansou-web:latest container_name: CloudSearch_PanSou restart: unless-stopped environment: DOMAIN: "localhost" PANSOU_PORT: "8888" PANSOU_HOST: "0.0.0.0" CACHE_TTL: "60" CACHE_ENABLED: "true" MAX_CONCURRENCY: "200" MAX_PAGES: "30" TZ: "Asia/Shanghai" volumes: - pansou-cache:/app/data/cache - pansou-logs:/app/data/logs networks: cloudsearch-net: aliases: - pansou healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8888/"] interval: 30s timeout: 10s retries: 3 # ==================== Redis 缓存 ==================== redis: image: redis:7-alpine container_name: CloudSearch_Redis restart: unless-stopped command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redis-data:/data networks: - cloudsearch-net healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 volumes: cloudsearch-data: pansou-cache: pansou-logs: redis-data: networks: cloudsearch-net: driver: bridge