# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: gcli2api
spec:
    description: 新版gcli2api
    variables:
        - key: DATABASE_PASSWORD
          type: PASSWORD
          name: 数据库密码
          description: PostgreSQL 数据库密码
        - key: DATABASE_USER
          type: STRING
          name: 数据库用户名
          description: PostgreSQL 数据库用户名
        - key: DATABASE_NAME
          type: STRING
          name: 数据库名称
          description: PostgreSQL 数据库名称
        - key: PORT
          type: STRING
          name: 应用端口
          description: 应用服务端口号
        - key: SESSION_TTL_MINUTES
          type: STRING
          name: 会话过期时间
          description: 会话过期时间(分钟)
        - key: LOG_LEVEL
          type: STRING
          name: 日志级别
          description: 应用日志级别
        - key: ACCOUNT_MAX_CONCURRENT_LEASES
          type: STRING
          name: 最大并发租约数
          description: 账户最大并发租约数
        - key: ACCOUNT_ACQUIRE_MAX_ATTEMPTS
          type: STRING
          name: 最大获取尝试次数
          description: 账户获取最大尝试次数
        - key: ACCOUNT_ACQUIRE_RETRY_DELAY_MS
          type: STRING
          name: 重试延迟
          description: 账户获取重试延迟(毫秒)
        - key: DOMAIN
          type: DOMAIN
          name: 域名
          description: 服务访问域名
    tags:
        - ai
        - api
        - gemini
        - openai
        - postgresql
    readme: |
        # GeminiCLI to API

        将 GeminiCLI 转换为 OpenAI 和 GEMINI API 接口

        ## 服务组件

        - **PostgreSQL 数据库**: 提供数据持久化支持
        - **应用服务**: 主应用服务，提供 API 接口

        ## 部署说明

        部署后请访问您的域名进行配置。

        ## 环境变量说明

        - **DATABASE_NAME**: 数据库名称，默认为 gcli2api
        - **DATABASE_USER**: 数据库用户名，默认为 gcli2api
        - **DATABASE_PASSWORD**: 数据库密码
        - **PORT**: 应用端口，默认为 3070
        - **SESSION_TTL_MINUTES**: 会话过期时间，默认 15 分钟
        - **LOG_LEVEL**: 日志级别，默认 info
        - **ACCOUNT_MAX_CONCURRENT_LEASES**: 账户最大并发租约数，默认 4
        - **ACCOUNT_ACQUIRE_MAX_ATTEMPTS**: 账户获取最大尝试次数，默认 5
        - **ACCOUNT_ACQUIRE_RETRY_DELAY_MS**: 账户获取重试延迟，默认 50ms
    services:
        - name: db
          template: PREBUILT
          spec:
            id: db-sulfaraculae
            source:
                image: postgres:16
            ports:
                - id: postgres
                  port: 5432
                  type: TCP
            volumes:
                - id: pgdata
                  dir: /var/lib/postgresql/data
            env:
                POSTGRES_DB:
                    default: ${DATABASE_NAME}
                POSTGRES_PASSWORD:
                    default: ${DATABASE_PASSWORD}
                POSTGRES_USER:
                    default: ${DATABASE_USER}
        - name: app
          template: PREBUILT
          spec:
            id: app
            source:
                image: hulisang/gcli2api:latest
            ports:
                - id: web
                  port: 3070
                  type: HTTP
            env:
                ACCOUNT_ACQUIRE_MAX_ATTEMPTS:
                    default: ${ACCOUNT_ACQUIRE_MAX_ATTEMPTS}
                ACCOUNT_ACQUIRE_RETRY_DELAY_MS:
                    default: ${ACCOUNT_ACQUIRE_RETRY_DELAY_MS}
                ACCOUNT_MAX_CONCURRENT_LEASES:
                    default: ${ACCOUNT_MAX_CONCURRENT_LEASES}
                CLI_VERSION:
                    default: 1.0.0
                DATABASE_URL:
                    default: postgres://${DATABASE_USER}:${DATABASE_PASSWORD}@db.zeabur.internal:5432/${DATABASE_NAME}
                LOG_LEVEL:
                    default: ${LOG_LEVEL}
                PORT:
                    default: ${PORT}
                SESSION_TTL_MINUTES:
                    default: ${SESSION_TTL_MINUTES}
          domainKey: DOMAIN
