diff --git a/AGENTS.md b/AGENTS.md index d06b93c..3012c67 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,13 +50,13 @@ | `config.yaml` | 本地开发默认配置(SQLite + redka,端口 8080) | | `docker-compose.yml` | 3 容器:MySQL 8.0 + Redis 7-alpine + AIOps(:8080) | | `docker-compose.k8s.yml` | 单应用容器 + 外部 DB | -| `Dockerfile.embed` | 4-stage Embed 镜像(前端→后端→Agent→Runtime),Compose 与 K8s 共用 | +| `Dockerfile` | 4-stage Embed 镜像(前端→后端→Agent→Runtime),Compose 与 K8s 共用 | | `.env.example` | Docker Compose 环境变量示例 | | `deploy/kubernetes/` | K8s 清单:`devops` 命名空间、NodePort 30080 | | `run.sh` | 统一入口:dev / build / docker / kubernetes / release / binary | | `Makefile` | 快捷命令(dev / build / docker-up / lint 等),部分委托给 `run.sh`,部分已陈旧 | -> 注意:项目根目录**没有**独立的 `Dockerfile`,只有 `Dockerfile.embed`。`docker-compose.yml` 直接引用 `Dockerfile.embed`。 +> 注意:项目根目录使用 `Dockerfile`(4-stage embed 单容器方案)。前端构建嵌入后端二进制,`docker-compose.yml` 直接引用。 ### 2.2 后端 @@ -120,7 +120,7 @@ aiops/ ├── tests/ # 集成测试脚本 ├── scripts/ # 构建辅助脚本(kubectl 安装、alpine 镜像源等) ├── run.sh # 统一入口 -├── Dockerfile.embed # 推荐生产镜像 +├── Dockerfile # 推荐生产镜像 ├── docker-compose.yml ├── docker-compose.k8s.yml ├── config.yaml @@ -486,7 +486,7 @@ WebSocket 无法设置自定义 header → 后端 `JWTAuth` 支持 `?token=` que | FE4 | Radix Dialog 警告 | 必须有 `` | | FE5 | Select.Item 空字符串 value | 用 sentinel 值 `__manual` | | FE6 | API 字段名不匹配 | 检查前后端命名一致性 | -| Build | Mac 构建 Linux 二进制 | 不能直接用 `./run.sh build`;用 `Dockerfile.embed` 或在 Linux 构建 | +| Build | Mac 构建 Linux 二进制 | 不能直接用 `./run.sh build`;用 `Dockerfile` 或在 Linux 构建 | --- diff --git a/CLAUDE.md b/CLAUDE.md index e9ac75e..a413da3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,7 +62,7 @@ 在 K8s 集群 `devops` 命名空间部署,单容器 embed 模式,NodePort 30080 暴露。 ```bash -./run.sh k8s deploy # 构建 Dockerfile.embed 镜像 + 全量部署 (MySQL+Redis+App) +./run.sh k8s deploy # 构建 Dockerfile 镜像 + 全量部署 (MySQL+Redis+App) ./run.sh k8s upgrade # 重新构建 + 滚动更新(不停机) ./run.sh k8s status # 查看 pods/svc/pvc/ingress ./run.sh k8s logs # 应用日志 (follow) @@ -207,7 +207,7 @@ aiops/ │ └── reporter/ # HTTP 上报 │ ├── deploy/kubernetes/ # K8s 部署清单 (devops 命名空间) -├── Dockerfile.embed # 4 阶段 Embed 镜像 (前端→后端→Agent→Runtime) +├── Dockerfile # 4 阶段 Embed 镜像 (前端→后端→Agent→Runtime) ├── docker-compose.yml # 4 容器部署 (mysql+redis+backend+frontend) ├── run.sh # 统一入口脚本 └── Makefile # 快捷命令 diff --git a/Dockerfile.embed b/Dockerfile similarity index 100% rename from Dockerfile.embed rename to Dockerfile diff --git a/README.md b/README.md index 522433d..abbf707 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ curl http://localhost:8080/version # 查看运行版本 ``` > Mac 上 `./run.sh build` 产出 **darwin** 二进制,仅本机可用。 -> Linux 服务器请在 Linux 上构建,或使用 Docker/K8s embed 镜像(`Dockerfile.embed` 固定 `GOOS=linux GOARCH=amd64`)。 +> Linux 服务器请在 Linux 上构建,或使用 Docker/K8s embed 镜像(`Dockerfile` 固定 `GOOS=linux GOARCH=amd64`)。 ### Agent 构建 @@ -144,7 +144,7 @@ aiops/ ├── deploy/kubernetes/ # K8s 部署清单 (devops 命名空间) ├── docker-compose.yml # MySQL + Redis + AIOps embed(3 容器) ├── docker-compose.k8s.yml # 单应用容器(连接外部 DB) -├── Dockerfile.embed # embed 单容器镜像(推荐) +├── Dockerfile # embed 单容器镜像(推荐) ├── run.sh # 统一入口脚本 └── aiops # 独立二进制产物(gitignore,项目根目录) ``` diff --git a/docker-compose.yml b/docker-compose.yml index 4d1f318..8923242 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -54,7 +54,7 @@ services: image: ${DOCKERHUB_IMAGE:-lghost/aiops}:${VERSION:-dev} build: context: . - dockerfile: Dockerfile.embed + dockerfile: Dockerfile args: VERSION: ${VERSION:-dev} BUILD_TIME: ${BUILD_TIME:-unknown} diff --git a/docs/PROJECT_SUMMARY.md b/docs/PROJECT_SUMMARY.md index f2d773e..10cc8d4 100644 --- a/docs/PROJECT_SUMMARY.md +++ b/docs/PROJECT_SUMMARY.md @@ -28,7 +28,7 @@ aiops/ ├── agent/ # 监控 Agent(独立 Go module) ├── docs/ # 开发文档 + Agent CLI 设计文档集 ├── deploy/kubernetes/ # K8s 部署清单 -├── Dockerfile.embed # 推荐生产镜像 +├── Dockerfile # 推荐生产镜像 ├── docker-compose.yml # 3 容器部署 └── run.sh # 统一入口脚本 ``` diff --git a/docs/README.md b/docs/README.md index 19860ac..2d08e6a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -66,4 +66,4 @@ Compose: ./run.sh docker up → mysql + redis + aiops (embed, :8080) K8s: ./run.sh kubernetes → lghost/aiops: embed 单 Pod ``` -> 前后端分离的 Nginx 容器已废弃,统一使用 `Dockerfile.embed` 单容器方案。 \ No newline at end of file +> 前后端分离的 Nginx 容器已废弃,统一使用 `Dockerfile` 单容器方案。 \ No newline at end of file diff --git a/docs/deployment.md b/docs/deployment.md index b23de26..5680455 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -143,7 +143,7 @@ WantedBy=multi-user.target ### 架构(3 容器) ``` -mysql:8.0 + redis:7-alpine + aiops (Dockerfile.embed) +mysql:8.0 + redis:7-alpine + aiops (Dockerfile) ↓ http://localhost:8080 (API + WebSocket + 前端 SPA) @@ -194,7 +194,7 @@ VERSION=v1.5.0 docker compose -f docker-compose.k8s.yml up -d --build ### 镜像 - 默认镜像:`lghost/aiops:` -- 构建文件:`Dockerfile.embed` +- 构建文件:`Dockerfile` - 命名空间:`devops` - 访问:`http://:30080` @@ -217,7 +217,7 @@ VERSION=v1.5.0 docker compose -f docker-compose.k8s.yml up -d --build ./run.sh kubernetes push v1.5.0 ``` -`Dockerfile.embed` 内固定 `GOOS=linux GOARCH=amd64`,在 Mac 上 `docker build` 产出的是 Linux 镜像。 +`Dockerfile` 内固定 `GOOS=linux GOARCH=amd64`,在 Mac 上 `docker build` 产出的是 Linux 镜像。 ### 运维命令 @@ -248,7 +248,7 @@ VERSION=v1.5.0 docker compose -f docker-compose.k8s.yml up -d --build | 操作 | Mac 支持 | 说明 | |------|---------|------| | `./run.sh build` | ✅(darwin 二进制) | 仅本机运行 | -| `docker build` (Dockerfile.embed) | ✅ | 产出 linux/amd64 镜像 | +| `docker build` (Dockerfile) | ✅ | 产出 linux/amd64 镜像 | | `docker push lghost/aiops:tag` | ✅ | 需 `docker login` | | `./run.sh release v1.x` | ✅ | 完整发版流程 | @@ -280,7 +280,7 @@ K8s 探针使用 `/version`。 | 文件 | 说明 | |------|------| | `run.sh` | 统一入口(build/docker/kubernetes/release) | -| `Dockerfile.embed` | embed 单容器镜像(推荐) | +| `Dockerfile` | embed 单容器镜像(推荐) | | `docker-compose.yml` | MySQL + Redis + AIOps | | `deploy/kubernetes/deployment.yaml` | K8s Deployment + NodePort | | `.gitignore` | 忽略 `aiops`、`backend/aiops*` 等编译产物 | \ No newline at end of file diff --git a/docs/project-structure.md b/docs/project-structure.md index 2eba5c3..e1aaa0f 100644 --- a/docs/project-structure.md +++ b/docs/project-structure.md @@ -84,7 +84,7 @@ aiops/ ├── deploy/kubernetes/ # K8s 清单 (devops 命名空间) ├── docker-compose.yml # MySQL + Redis + AIOps embed ├── docker-compose.k8s.yml # 单应用 + 外部 DB -├── Dockerfile.embed # embed 单容器镜像(推荐) +├── Dockerfile # embed 单容器镜像(推荐) ├── run.sh # 统一入口脚本 ├── aiops # 独立二进制产物(gitignore) └── README.md @@ -117,7 +117,7 @@ aiops/ | 文件 | 用途 | |------|------| | `run.sh` | build / docker / kubernetes / release 统一入口 | -| `Dockerfile.embed` | 生产推荐:前端嵌入后端单容器 | +| `Dockerfile` | 生产推荐:前端嵌入后端单容器 | | `docker-compose.yml` | 3 容器:MySQL + Redis + AIOps | | `backend/static/` | `go:embed` 目标,由 `./run.sh build` 同步 | | `./aiops` | 独立二进制输出路径(项目根目录) | @@ -163,5 +163,5 @@ aiops/ 编译时通过 ldflags 注入 `main.Version` / `BuildTime` / `GitCommit`: - `./run.sh build` / `./run.sh build tag v1.5.0` -- `Dockerfile.embed` 构建参数 `VERSION` / `BUILD_TIME` / `GIT_COMMIT` +- `Dockerfile` 构建参数 `VERSION` / `BUILD_TIME` / `GIT_COMMIT` - 运行时:`./aiops version`、`GET /version` \ No newline at end of file diff --git a/frontend/src/components/auth/Login.tsx b/frontend/src/components/auth/Login.tsx index fd9a992..7bb8b81 100644 --- a/frontend/src/components/auth/Login.tsx +++ b/frontend/src/components/auth/Login.tsx @@ -34,7 +34,7 @@ export function Login() { setError(''); setLoading(true); try { - const result = await authApi.login(username, password) as { user: { id: number; username: string }; token: string; permissions?: string[] }; + const result = await authApi.login(username, password) as { user: { id: number; username: string; email: string; status: number }; token: string; permissions?: string[] }; useUserStore.getState().login(result.user, result.token, result.permissions ?? null); localStorage.setItem('token', result.token); navigate('/', { replace: true }); diff --git a/run.sh b/run.sh index 5118213..b0bd3e7 100755 --- a/run.sh +++ b/run.sh @@ -507,7 +507,7 @@ build_embed_image() { export DOCKER_BUILDKIT=1 local build_args=( - -f Dockerfile.embed + -f Dockerfile --build-arg "VERSION=${BUILD_VERSION}" --build-arg "BUILD_TIME=${BUILD_TIME}" --build-arg "GIT_COMMIT=${GIT_COMMIT}"