安装部署
本指南提供统一企业数字平台的详细安装步骤,支持 Docker 单机部署和 Kubernetes 集群部署。
部署方式选择
| 部署方式 | 适用场景 | 复杂度 | 可扩展性 |
|---|---|---|---|
| Docker Compose | 开发测试、小型企业 | ⭐ | 低 |
| Kubernetes | 生产环境、中大型企业 | ⭐⭐⭐ | 高 |
| SaaS 云服务 | 快速上线、无运维团队 | ⭐ | 高 |
准备工作
1. 获取安装包
# 克隆部署仓库
git clone https://github.com/enterprise-platform/deploy.git
cd deploy
# 或下载离线安装包
wget https://releases.enterprise-platform.com/v3.0/offline-package.tar.gz
tar -xzf offline-package.tar.gz
2. 配置许可证
# 将许可证文件放置到配置目录
cp license.key ./config/
# 验证许可证
./bin/license-check
3. 准备配置文件
# 复制示例配置
cp .env.example .env
# 编辑配置文件
vim .env
Docker Compose 部署
环境要求
- Docker 20.10+
- Docker Compose 2.0+
- 可用内存 16GB+
- 可用磁盘 100GB+
安装步骤
1. 安装 Docker
# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# 验证安装
docker --version
docker compose version
2. 配置环境变量
编辑 .env 文件:
# 基础配置
PLATFORM_DOMAIN=platform.yourcompany.com
ADMIN_EMAIL=admin@yourcompany.com
ADMIN_PASSWORD=YourSecurePassword123!
# 数据库配置
DB_HOST=postgres
DB_PORT=5432
DB_NAME=enterprise_platform
DB_USER=platform
DB_PASSWORD=DBSecurePassword456!
# Redis 配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=RedisPassword789!
# 存储配置
STORAGE_TYPE=minio
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=MinioPassword000!
3. 启动服务
# 拉取镜像并启动
docker compose up -d
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f
4. 初始化数据库
# 执行数据库迁移
docker compose exec api ./bin/migrate
# 初始化基础数据
docker compose exec api ./bin/seed
5. 验证安装
# 健康检查
curl -s http://localhost/health | jq
# 预期输出
{
"status": "healthy",
"version": "3.0.0",
"services": {
"api": "up",
"database": "up",
"cache": "up",
"search": "up"
}
}
Docker Compose 配置示例
# docker-compose.yml
version: '3.8'
services:
nginx:
image: enterprise-platform/nginx:3.0
ports:
- "80:80"
- "443:443"
volumes:
- ./config/nginx:/etc/nginx/conf.d
- ./certs:/etc/ssl/certs
depends_on:
- api
- web
web:
image: enterprise-platform/web:3.0
environment:
- API_URL=http://api:3000
depends_on:
- api
api:
image: enterprise-platform/api:3.0
environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@postgres:5432/${DB_NAME}
- REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379
depends_on:
- postgres
- redis
worker:
image: enterprise-platform/worker:3.0
environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@postgres:5432/${DB_NAME}
- REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379
depends_on:
- postgres
- redis
postgres:
image: postgres:14-alpine
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:6-alpine
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
elasticsearch:
image: elasticsearch:8.0.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
volumes:
- es_data:/usr/share/elasticsearch/data
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=${MINIO_ACCESS_KEY}
- MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY}
volumes:
- minio_data:/data
volumes:
postgres_data:
redis_data:
es_data:
minio_data:
Kubernetes 部署
环境要求
- Kubernetes 1.24+
- Helm 3.10+
- kubectl 配置完成
- 存储类(StorageClass)可用
安装步骤
1. 添加 Helm 仓库
# 添加官方仓库
helm repo add enterprise-platform https://charts.enterprise-platform.com
helm repo update
# 查看可用版本
helm search repo enterprise-platform
2. 创建命名空间
kubectl create namespace enterprise-platform
3. 配置 values.yaml
# values.yaml
global:
domain: platform.yourcompany.com
storageClass: standard
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
tls:
enabled: true
api:
replicas: 3
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
web:
replicas: 2
resources:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
worker:
replicas: 2
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "1"
memory: "2Gi"
postgresql:
enabled: true
auth:
postgresPassword: "YourDBPassword"
database: enterprise_platform
primary:
persistence:
size: 100Gi
redis:
enabled: true
auth:
password: "YourRedisPassword"
master:
persistence:
size: 10Gi
elasticsearch:
enabled: true
replicas: 3
volumeClaimTemplate:
resources:
requests:
storage: 50Gi
minio:
enabled: true
rootUser: minioadmin
rootPassword: "YourMinioPassword"
persistence:
size: 100Gi
4. 安装 Chart
# 安装
helm install enterprise-platform enterprise-platform/enterprise-platform \
-n enterprise-platform \
-f values.yaml
# 查看部署状态
kubectl get pods -n enterprise-platform -w
# 查看服务
kubectl get svc -n enterprise-platform
5. 配置 DNS
将域名解析到 Ingress Controller 的外部 IP:
# 获取 Ingress IP
kubectl get ingress -n enterprise-platform
# 配置 DNS A 记录
# platform.yourcompany.com -> <INGRESS_IP>
高可用配置
# ha-values.yaml
api:
replicas: 5
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: api
topologyKey: kubernetes.io/hostname
postgresql:
architecture: replication
readReplicas:
replicaCount: 2
redis:
architecture: replication
replica:
replicaCount: 3
elasticsearch:
replicas: 5
升级指南
Docker Compose 升级
# 备份数据
docker compose exec postgres pg_dump -U platform enterprise_platform > backup.sql
# 拉取新版本
docker compose pull
# 停止服务
docker compose down
# 启动新版本
docker compose up -d
# 执行迁移
docker compose exec api ./bin/migrate
Kubernetes 升级
# 备份
kubectl exec -n enterprise-platform deploy/postgresql -- pg_dump -U platform enterprise_platform > backup.sql
# 升级
helm upgrade enterprise-platform enterprise-platform/enterprise-platform \
-n enterprise-platform \
-f values.yaml
# 查看升级状态
helm history enterprise-platform -n enterprise-platform
常见问题
Q: 服务启动失败?
# 查看详细日志
docker compose logs api
kubectl logs -n enterprise-platform deploy/api
# 检查资源使用
docker stats
kubectl top pods -n enterprise-platform
Q: 数据库连接失败?
- 检查数据库服务是否运行
- 验证连接字符串配置
- 检查网络策略/防火墙
Q: 如何重置管理员密码?
# Docker
docker compose exec api ./bin/reset-password admin@yourcompany.com
# Kubernetes
kubectl exec -n enterprise-platform deploy/api -- ./bin/reset-password admin@yourcompany.com