# ============================================================================= # AstroResearch Docker Compose 部署 # ============================================================================= # # 快速启动 (Mode A — 推荐): # 1. cp .env.example .env # 编辑填入 API Key # 2. docker compose up -d # 启动服务 # 3. open http://localhost:8000 # # 使用 Mode B (进程内 Obscura): # 1. 先克隆 Obscura: mkdir -p libs && git clone https://github.com/h4ckf0r0day/obscura libs/obscura # 2. 构建: docker compose build astroresearch-all # 3. 启动: docker compose up -d astroresearch-all # # 查看日志: docker compose logs -f # 停止: docker compose down # 重建镜像: docker compose build --no-cache # ============================================================================= services: # ─── Mode A: Alpine 小镜像 + 外部 Obscura (推荐日常使用) ────────────────── astroresearch: build: context: . image: astroresearch:latest container_name: astroresearch restart: unless-stopped ports: - "${PORT:-8000}:8000" env_file: - .env environment: - DATABASE_URL=sqlite:///app/library/astro_research.db - LIBRARY_DIR=/app/library - SKILLS_DIR=/app/skills - LOG_DIR=/app/logs - LOG_FORMAT=json - LOG_OUTPUTS=stdout - PORT=8000 volumes: - ./library:/app/library - ./logs:/app/logs - ./skills:/app/skills:ro # Mode A: 外部 obscura 反爬浏览器 (bind-mount 避免打进镜像) - ./bin:/app/bin:ro # 资源限制 (可选) # deploy: # resources: # limits: # memory: 2G # reservations: # memory: 128M healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:8000/"] interval: 30s timeout: 10s retries: 3 start_period: 15s # ─── Mode B: Distroless 全功能单体 (Obscura/V8/BoringSSL 编译在内) ────── astroresearch-all: build: context: . dockerfile: Dockerfile.modeB image: astroresearch-all:latest container_name: astroresearch-all restart: unless-stopped # 默认不随 `docker compose up` 启动, 需显式指定 profiles: - full ports: - "${PORT:-8000}:8000" env_file: - .env environment: - DATABASE_URL=sqlite:///app/library/astro_research.db - LIBRARY_DIR=/app/library - SKILLS_DIR=/app/skills - LOG_DIR=/app/logs - LOG_FORMAT=json - LOG_OUTPUTS=stdout - PORT=8000 volumes: - ./library:/app/library - ./logs:/app/logs - ./skills:/app/skills:ro # 注: Mode B 无需 ./bin:/app/bin (Obscura 已编译进二进制) # 资源限制 (可选) # deploy: # resources: # limits: # memory: 2G # reservations: # memory: 128M