11. 交付与运维
11.1 一键部署
部署方案
智能法律解决方案支持多种部署方式,提供一键部署脚本:
部署方式
1. Docker Compose部署
- 适用场景:单机部署、开发测试环境
- 优势:简单快速,易于管理
- 劣势:不适合大规模生产环境
2. Kubernetes部署
- 适用场景:生产环境、大规模部署
- 优势:高可用、弹性伸缩、易于管理
- 劣势:配置复杂,需要Kubernetes集群
3. 云服务部署
- 适用场景:快速上线、弹性扩展
- 优势:无需维护基础设施,按需付费
- 劣势:成本较高,依赖云服务商
Docker Compose部署
docker-compose.yml:
version: '3.8'
services:
# API服务
legal-api:
image: legal-api:latest
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@postgres:5432/legal_db
- REDIS_URL=redis://redis:6379
- VECTOR_DB_URL=http://milvus:19530
depends_on:
- postgres
- redis
- milvus
# 数据库
postgres:
image: postgres:14
environment:
- POSTGRES_DB=legal_db
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
# Redis
redis:
image: redis:7
volumes:
- redis_data:/data
# 向量数据库
milvus:
image: milvusdb/milvus:latest
volumes:
- milvus_data:/var/lib/milvus
volumes:
postgres_data:
redis_data:
milvus_data:
部署脚本:
#!/bin/bash
# deploy.sh
echo "开始部署智能法律解决方案..."
# 检查Docker和Docker Compose
if ! command -v docker &> /dev/null; then
echo "错误: 未安装Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
echo "错误: 未安装Docker Compose"
exit 1
fi
# 拉取最新镜像
echo "拉取最新镜像..."
docker-compose pull
# 启动服务
echo "启动服务..."
docker-compose up -d
# 等待服务就绪
echo "等待服务就绪..."
sleep 30
# 检查服务状态
echo "检查服务状 态..."
docker-compose ps
echo "部署完成!"
Kubernetes部署
部署清单:
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: legal-api
spec:
replicas: 3
selector:
matchLabels:
app: legal-api
template:
metadata:
labels:
app: legal-api
spec:
containers:
- name: legal-api
image: legal-api:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: legal-secrets
key: database-url
resources:
requests:
cpu: 1000m
memory: 2Gi
limits:
cpu: 2000m
memory: 4Gi
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: legal-api-service
spec:
selector:
app: legal-api
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
部署脚本:
#!/bin/bash
# k8s-deploy.sh
echo "开始Kubernetes部署..."
# 检查kubectl
if ! command -v kubectl &> /dev/null; then
echo "错误: 未安装kubectl"
exit 1
fi
# 创建命名空间
kubectl create namespace legal-system --dry-run=client -o yaml | kubectl apply -f -
# 部署配置
kubectl apply -f k8s/config.yaml -n legal-system
# 部署服务
kubectl apply -f k8s/deployment.yaml -n legal-system
kubectl apply -f k8s/service.yaml -n legal-system
# 等待部署完成
kubectl wait --for=condition=available --timeout=300s deployment/legal-api -n legal-system
echo "部署完成!"