From ce33c58f148bb71e7e0f8517d18cca2b8d63715e Mon Sep 17 00:00:00 2001 From: huangzhenpc Date: Tue, 13 Jan 2026 11:15:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=81=A2=E5=A4=8D=20docker-compose.1pa?= =?UTF-8?q?nel.yml=20=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 恢复 1Panel 部署方式配置 - 更新品牌名称为 TianShuAPI - 保持数据卷配置一致,确保数据不丢失 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- deploy/docker-compose.1panel.yml | 130 +++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 deploy/docker-compose.1panel.yml diff --git a/deploy/docker-compose.1panel.yml b/deploy/docker-compose.1panel.yml new file mode 100644 index 00000000..ee628ba0 --- /dev/null +++ b/deploy/docker-compose.1panel.yml @@ -0,0 +1,130 @@ +# ============================================================================= +# TianShuAPI Docker Compose - 1Panel 环境配置 +# ============================================================================= +# 此配置文件适用于已有 1Panel 环境,复用现有 Redis +# ============================================================================= + +services: + # =========================================================================== + # TianShuAPI Application + # =========================================================================== + sub2api: + # 方式1:使用官方镜像(快速部署) + # image: weishaw/sub2api:latest + + # 方式2:从本地代码构建(二次开发) + build: + context: ../ + dockerfile: Dockerfile + args: + - BUILD_TAGS=embed + image: sub2api:local + 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 + 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 + - DATABASE_HOST=postgres + - DATABASE_PORT=5432 + - DATABASE_USER=${POSTGRES_USER:-sub2api} + - DATABASE_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} + - DATABASE_DBNAME=${POSTGRES_DB:-sub2api} + - DATABASE_SSLMODE=disable + + # Redis Configuration - 使用外部 Redis + - REDIS_HOST=${REDIS_HOST} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_DB=${REDIS_DB:-0} + + # Admin Account + - 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 + - TZ=${TZ:-Asia/Shanghai} + + # Gemini OAuth (可选) + - 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:-} + depends_on: + postgres: + condition: service_healthy + extra_hosts: + - "host.docker.internal:host-gateway" + networks: + - sub2api-network + - 1panel-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + + # =========================================================================== + # PostgreSQL Database + # =========================================================================== + postgres: + image: postgres:18-alpine + container_name: sub2api-postgres + restart: unless-stopped + ulimits: + nofile: + soft: 100000 + hard: 100000 + volumes: + - postgres_data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=${POSTGRES_USER:-sub2api} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} + - POSTGRES_DB=${POSTGRES_DB:-sub2api} + - TZ=${TZ:-Asia/Shanghai} + networks: + - sub2api-network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-sub2api} -d ${POSTGRES_DB:-sub2api}"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + +# ============================================================================= +# Volumes +# ============================================================================= +volumes: + sub2api_data: + driver: local + postgres_data: + driver: local + +# ============================================================================= +# Networks +# ============================================================================= +networks: + sub2api-network: + driver: bridge + 1panel-network: + external: true