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: 四种部署方式对比文档
This commit is contained in:
1 parent
24f955832e
commit
4631b02f13
15 files changed
+1218
-3
No files matched your search
@@ -0,0 +1,91 @@
|
||||
# ============================================================
|
||||
# AIOps 单容器 docker-compose(embed 模式)
|
||||
# 前端嵌入后端二进制,不需要独立 nginx 容器
|
||||
# 用法: docker-compose -f docker-compose.embed.yml up -d --build
|
||||
# 署名 Logan.Li
|
||||
# ============================================================
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: aiops-mysql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
MYSQL_DATABASE: aiops
|
||||
MYSQL_USER: aiops
|
||||
MYSQL_PASSWORD: aiops_pass_2026
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
command: >
|
||||
--default-authentication-plugin=mysql_native_password
|
||||
--character-set-server=utf8mb4
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p$$MYSQL_ROOT_PASSWORD"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 30s
|
||||
networks:
|
||||
- aiops-network
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: aiops-redis
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: redis-server --appendonly yes
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- aiops-network
|
||||
|
||||
# 单容器:后端 API (:8080) + 嵌入前端 (:8080)
|
||||
# nginx 不再需要,gin 直接服务静态文件
|
||||
aiops:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: backend/Dockerfile.embed
|
||||
container_name: aiops-app
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:8080" # 前端 + API 都走 8080
|
||||
- "8080:8080" # 也可以直接访问 8080
|
||||
volumes:
|
||||
- ./backend/config.yaml:/app/config.yaml
|
||||
- app_logs:/app/logs
|
||||
- app_uploads:/app/uploads
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
networks:
|
||||
- aiops-network
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
app_logs:
|
||||
app_uploads:
|
||||
|
||||
networks:
|
||||
aiops-network:
|
||||
driver: bridge
|
||||
Reference in new issue
Block a user