- 后端:Bun + Hono + Drizzle ORM + SQLite - 前端:Vue 3 + Naive UI + ECharts - 项目管理:创建项目 + 绑定 Git 仓库 - OKR 系统:目标/关键结果 CRUD + 进度追踪 - Git 同步:Gitea API 自动同步 commit/PR + 作者关联 - 数据看板:项目 OKR 进度 + KR 状态分布 + 代码活动 - 权限体系:admin/manager/developer/viewer 四级 - Docker 部署:docker-compose + nginx Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.4 KiB
YAML
54 lines
1.4 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
dashboard-api:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "3200:3200"
|
|
environment:
|
|
- DATABASE_PATH=/data/devperf.db
|
|
- JWT_SECRET=${JWT_SECRET:-change-me-in-production-32chars}
|
|
- PORT=3200
|
|
- PLANE_BASE_URL=${PLANE_BASE_URL:-http://plane-api:8000}
|
|
- PLANE_API_TOKEN=${PLANE_API_TOKEN}
|
|
- PLANE_WORKSPACE_SLUG=${PLANE_WORKSPACE_SLUG:-jasonqiyuan}
|
|
- GITEA_BASE_URL=${GITEA_BASE_URL:-http://gitea:3000}
|
|
- GITEA_API_TOKEN=${GITEA_API_TOKEN}
|
|
- GITEA_ORG=${GITEA_ORG:-jasonqiyuan}
|
|
- SYNC_PLANE_INTERVAL=${SYNC_PLANE_INTERVAL:-15}
|
|
- SYNC_GITEA_INTERVAL=${SYNC_GITEA_INTERVAL:-30}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@jasonqiyuan.com}
|
|
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-Admin123!}
|
|
volumes:
|
|
- dashboard-data:/data
|
|
restart: unless-stopped
|
|
networks:
|
|
- devperf-net
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3200/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
dashboard-web:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "3201:80"
|
|
depends_on:
|
|
dashboard-api:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
networks:
|
|
- devperf-net
|
|
|
|
volumes:
|
|
dashboard-data:
|
|
|
|
networks:
|
|
devperf-net:
|
|
external: true
|