# GitDataAI Docker 默认镜像仓库:`harbor.gitdata.me/app` ## 服务 | Dockerfile | 服务 | 端口 | 健康检查 | |-----------|------|------|---------| | `gitdata.Dockerfile` | API 服务 | 8080 | `/metrics` | | `gitpod.Dockerfile` | Git 协议 (HTTP/SSH/gRPC) | 8080, 2222, 50051 | `/health` | | `gitsync.Dockerfile` | Git 同步 worker | 8081 | `/health` | | `email.Dockerfile` | 邮件 worker | 8083 | `/health` | | `web.Dockerfile` | 前端 | 80 | `/` | ## 构建 先编译 Rust 二进制,再打镜像: ```bash # 编译全部 Rust 服务 cargo build --release # 构建全部镜像 (默认推送到 harbor.gitdata.me/app) ./docker/build.sh # 只构建指定服务 ./docker/build.sh gitdata gitpod # 自定义 tag ./docker/build.sh -t v1.2.0 # 自定义 registry ./docker/build.sh -r myreg.io/app -t dev ``` ## 推送 ```bash # 推送全部 (默认 harbor.gitdata.me/app) ./docker/push.sh # 推送指定服务 ./docker/push.sh gitdata gitpod # 自定义 tag / registry ./docker/push.sh -t v1.2.0 ./docker/push.sh -r myreg.io/app -t dev ``` ## 本地开发 使用 docker compose 启动全部服务(含依赖的 Postgres/Redis/Qdrant/NATS/MinIO): ```bash docker compose -f docker/docker-compose.yml up -d ``` compose 默认从 `harbor.gitdata.me/app` 拉取镜像,可通过环境变量覆盖: ```bash IMAGE_REGISTRY=myreg.io/app IMAGE_TAG=v1.2.0 \ docker compose -f docker/docker-compose.yml up -d ``` ## 镜像结构 - Rust 服务:`debian:bookworm-slim` + 预编译二进制(~20MB) - 前端:多阶段构建 `oven/bun` + `nginx:alpine` - 数据库迁移在 gitdata 启动时自动执行(见 lib/migrate)