# ============================================================================= # Sub2API Docker Compose - Standalone Configuration # ============================================================================= # This configuration runs only the Sub2API application. # PostgreSQL and Redis must be provided externally. # # Usage: # 1. Copy .env.example to .env and configure database/redis connection # 2. docker-compose -f docker-compose.standalone.yml up -d # 3. Access: http://localhost:8080 # ============================================================================= services: sub2api: image: weishaw/sub2api:latest container_name: sub2api restart: unless-stopped ulimits: nofile: soft: 100000 hard: 100000 ports: - "${BIND_HOST:-0.0.0.0}:${SERVER_PORT:-8080}:8080" volumes: - sub2api_data:/app/data extra_hosts: - "host.docker.internal:host-gateway" environment: # ======================================================================= # Auto Setup # ======================================================================= - AUTO_SETUP=true # ======================================================================= # Server Configuration # ======================================================================= - SERVER_HOST=0.0.0.0 - SERVER_PORT=8080 - SERVER_MODE=${SERVER_MODE:-release} - RUN_MODE=${RUN_MODE:-standard} # ======================================================================= # Database Configuration (PostgreSQL) - Required # ======================================================================= - DATABASE_HOST=${DATABASE_HOST:?DATABASE_HOST is required} - DATABASE_PORT=${DATABASE_PORT:-5432} - DATABASE_USER=${DATABASE_USER:-sub2api} - DATABASE_PASSWORD=${DATABASE_PASSWORD:?DATABASE_PASSWORD is required} - DATABASE_DBNAME=${DATABASE_DBNAME:-sub2api} - DATABASE_SSLMODE=${DATABASE_SSLMODE:-disable} # ======================================================================= # Redis Configuration - Required # ======================================================================= - REDIS_HOST=${REDIS_HOST:?REDIS_HOST is required} - REDIS_PORT=${REDIS_PORT:-6379} - REDIS_PASSWORD=${REDIS_PASSWORD:-} - REDIS_DB=${REDIS_DB:-0} # ======================================================================= # Admin Account (auto-created on first run) # ======================================================================= - ADMIN_EMAIL=${ADMIN_EMAIL:-admin@sub2api.local} - ADMIN_PASSWORD=${ADMIN_PASSWORD:-} # ======================================================================= # JWT Configuration # ======================================================================= - JWT_SECRET=${JWT_SECRET:-} - JWT_EXPIRE_HOUR=${JWT_EXPIRE_HOUR:-24} # ======================================================================= # Timezone Configuration # ======================================================================= - TZ=${TZ:-Asia/Shanghai} # ======================================================================= # Gemini OAuth Configuration (optional) # ======================================================================= - GEMINI_OAUTH_CLIENT_ID=${GEMINI_OAUTH_CLIENT_ID:-} - GEMINI_OAUTH_CLIENT_SECRET=${GEMINI_OAUTH_CLIENT_SECRET:-} - GEMINI_OAUTH_SCOPES=${GEMINI_OAUTH_SCOPES:-} - GEMINI_QUOTA_POLICY=${GEMINI_QUOTA_POLICY:-} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s volumes: sub2api_data: driver: local