Files
aiops/Makefile
T
Logan 4631b02f13 feat: 三种部署方式 — embed单容器 + 二进制部署 + K8s
新增三种部署方式(原有 docker-compose 不受影响):

1. Docker embed 单容器 (docker-compose.embed.yml):
   - go:embed 前端嵌入后端二进制
   - 不需要 nginx 容器,3容器→2容器
   - 镜像仅 54.8MB (vs 原来 1.16GB)
   - 用法: make docker-embed

2. 二进制部署 (deploy/binary/):
   - make build-binary 生成单二进制
   - install.sh 自动创建 systemd 服务
   - 适合无 Docker 环境
   - 用法: scp aiops + install.sh, bash install.sh install

3. Kubernetes 部署 (deploy/k8s/):
   - devops 命名空间全套 yaml
   - MySQL StatefulSet + Redis StatefulSet + Backend Deployment
   - ConfigMap + Secret + Ingress
   - 用法: kubectl apply -f deploy/k8s/

核心改动:
- backend/cmd/embed.go: go:embed 前端 + SPA fallback 路由
- backend/Dockerfile.embed: 四阶段构建 (前端→后端embed→agent→runtime)
- Makefile: build-binary + docker-embed 目标
- deploy/README.md: 四种部署方式对比文档
2026-06-21 14:20:29 +08:00

103 lines
3.1 KiB
Makefile

# AIOps 智能运维平台 - Makefile
# 使用方式: make help
.PHONY: help install dev build build-ui build-api build-binary status stop restart logs lint clean \
docker-up docker-down docker-build docker-logs docker-embed
help:
@echo "AIOps 智能运维平台 - 可用命令:"
@echo ""
@echo " 本地开发:"
@echo " make install - 安装前后端依赖"
@echo " make dev - 启动开发环境(前后端)"
@echo " make build - 构建生产环境(前后端)"
@echo " make build-ui - 仅构建前端"
@echo " make build-api - 仅构建后端"
@echo " make status - 查看服务状态"
@echo " make stop - 停止所有服务"
@echo " make restart - 重启所有服务"
@echo " make logs - 查看实时日志"
@echo " make lint - 代码检查"
@echo " make clean - 清理构建产物"
@echo ""
@echo " Docker 部署:"
@echo " make docker-up - 构建并启动所有容器"
@echo " make docker-down - 停止并移除所有容器"
@echo " make docker-build - 重新构建镜像(不启动)"
@echo " make docker-logs - 查看容器日志"
@echo " make docker-embed - 单容器部署(embed 模式,前后端合一)"
@echo ""
@echo " 二进制部署:"
@echo " make build-binary - 编译单二进制(前端嵌入后端)"
# ==================== 本地开发 ====================
install:
@echo "安装后端依赖..."
cd backend && go mod download
@echo "安装前端依赖..."
cd frontend && npm install
dev:
./run.sh start
build-ui:
@echo "构建前端..."
cd frontend && npm run build
build-api:
@echo "构建后端..."
cd backend && CGO_ENABLED=0 go build -o aiops-server ./cmd/
build: build-api build-ui
status:
./run.sh status
stop:
./run.sh stop
restart:
./run.sh restart
logs:
@tail -f backend/logs/server.log frontend/logs/dev.log 2>/dev/null || echo "日志文件不存在"
lint:
@echo "检查后端代码..."
cd backend && go vet ./...
@echo "检查前端代码..."
cd frontend && npm run lint 2>/dev/null || echo "前端 lint 未配置,跳过"
clean:
@echo "清理构建产物..."
rm -f backend/aiops-server
rm -rf frontend/dist
rm -f backend/logs/*.log frontend/logs/*.log
@echo "清理完成"
# ==================== Docker 部署(双容器:前端 nginx + 后端) ====================
docker-up:
docker-compose up -d --build
docker-down:
docker-compose down
docker-build:
docker-compose build
docker-logs:
docker-compose logs -f
# ==================== Docker 部署(单容器:embed 模式) ====================
docker-embed:
docker-compose -f docker-compose.embed.yml up -d --build
# ==================== 二进制部署(embed 模式) ====================
build-binary: build-ui
@echo "构建单二进制(前端嵌入后端)..."
@mkdir -p backend/cmd/static
@cp -r frontend/dist/* backend/cmd/static/
cd backend && CGO_ENABLED=0 go build -ldflags="-s -w" -o ../aiops ./cmd/
@rm -rf backend/cmd/static
@echo "✓ 二进制已生成: ./aiops"
@echo " 部署: scp aiops deploy/binary/install.sh root@<server>:/tmp/ && ssh root@<server> 'cd /tmp && bash install.sh install'"