安装 部署 Docker Kubernetes

安装部署

详细的平台安装部署指南,支持多种部署方式

安装部署

本指南提供统一企业数字平台的详细安装步骤,支持 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: 数据库连接失败?

  1. 检查数据库服务是否运行
  2. 验证连接字符串配置
  3. 检查网络策略/防火墙

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

下一步