yudao-cloud Docker部署:容器化部署与Kubernetes集群管理

yudao-cloud Docker部署:容器化部署与Kubernetes集群管理

【免费下载链接】yudao-cloud ruoyi-vue-pro 全新 Cloud 版本,优化重构所有功能。基于 Spring Cloud Alibaba + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城、CRM、ERP、AI 大模型等功能。你的 ⭐️ Star ⭐️,是作者生发的动力! 【免费下载链接】yudao-cloud 项目地址: https://gitcode.com/gh_mirrors/yu/yudao-cloud

前言

还在为复杂的微服务部署而头疼吗?yudao-cloud作为基于Spring Cloud Alibaba的企业级微服务框架,提供了完整的Docker容器化部署方案。本文将带你从零开始,掌握yudao-cloud的Docker部署全流程,并深入探讨Kubernetes集群管理的最佳实践。

通过本文,你将获得:

  • ✅ 完整的Docker Compose部署方案
  • ✅ 多模块微服务的容器化构建指南
  • ✅ Kubernetes集群部署配置详解
  • ✅ 生产环境优化策略与监控方案
  • ✅ 持续集成/持续部署(CI/CD)流水线设计

一、项目架构与部署需求分析

1.1 yudao-cloud微服务架构

yudao-cloud采用典型的微服务架构,主要包含以下核心模块:

mermaid

1.2 部署环境要求

组件版本要求说明
JDK1.8+推荐使用Eclipse Temurin
Docker20.10+容器运行时环境
Docker Compose2.0+容器编排工具
MySQL5.7/8.0关系型数据库
Redis6.0+缓存数据库
Nacos2.0+服务注册与配置中心

二、Docker化部署实战

2.1 项目Dockerfile解析

yudao-cloud为每个微服务模块提供了标准化的Dockerfile:

## 使用Eclipse Temurin作为基础镜像
FROM eclipse-temurin:8-jre

## 创建目录,并使用它作为工作目录
RUN mkdir -p /yudao-module-system-server
WORKDIR /yudao-module-system-server

## 将后端项目的Jar文件复制到镜像中
COPY ./target/yudao-module-system-server.jar app.jar

## 设置时区和JVM参数
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m"

## 暴露服务端口
EXPOSE 48081

## 启动应用程序
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar

2.2 Docker Compose编排配置

项目提供了完整的docker-compose.yml文件,支持多服务协同部署:

version: '3'
services:
  yudao-gateway:
    image: yudao-gateway
    container_name: yudao-gateway
    environment:
      - TZ=Asia/Shanghai
      - SPRING_PROFILES_ACTIVE=test
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=nacos:8848
      - SPRING_CLOUD_NACOS_SERVER_ADDR=nacos:8848
    volumes:
      - ./logs:/root/logs/
    restart: always
    ports:
      - "48080:48080"

  yudao-system:
    image: yudao-module-system-biz
    container_name: yudao-system
    environment:
      - TZ=Asia/Shanghai
      - SPRING_PROFILES_ACTIVE=test
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=nacos:8848
      - SPRING_CLOUD_NACOS_SERVER_ADDR=nacos:8848
    volumes:
      - ./logs:/root/logs/
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:48081"]
      interval: 30s
      timeout: 10s
      retries: 5
    restart: always
    depends_on:
      - nacos
      - mysql

2.3 完整的部署脚本

创建部署脚本deploy.sh实现一键部署:

#!/bin/bash

# 定义颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo -e "${GREEN}开始构建yudao-cloud Docker镜像...${NC}"

# 构建所有模块的Docker镜像
modules=("gateway" "system" "infra" "bpm" "pay" "report")
for module in "${modules[@]}"; do
    echo -e "${YELLOW}构建 ${module} 模块...${NC}"
    docker build -t yudao-${module} ./yudao-${module}/
done

echo -e "${GREEN}启动Docker Compose服务...${NC}"
docker-compose -f script/docker/docker-compose.yml up -d

echo -e "${GREEN}部署完成!访问地址:http://localhost:48080${NC}"

三、Kubernetes集群部署

3.1 Kubernetes部署文件结构

mermaid

3.2 Deployment配置示例

创建yudao-system-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: yudao-system
  namespace: yudao-cloud
  labels:
    app: yudao-system
    version: v1.0.0
spec:
  replicas: 2
  selector:
    matchLabels:
      app: yudao-system
  template:
    metadata:
      labels:
        app: yudao-system
    spec:
      containers:
      - name: yudao-system
        image: yudao-module-system-biz:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 48081
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: SPRING_PROFILES_ACTIVE
          value: "prod"
        - name: SPRING_CLOUD_NACOS_SERVER_ADDR
          value: "nacos-service:8848"
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "1Gi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 48081
          initialDelaySeconds: 60
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /actuator/health
            port: 48081
          initialDelaySeconds: 30
          periodSeconds: 5

3.3 Service和Ingress配置

创建服务暴露配置yudao-services.yaml

apiVersion: v1
kind: Service
metadata:
  name: yudao-system-service
  namespace: yudao-cloud
spec:
  selector:
    app: yudao-system
  ports:
  - port: 48081
    targetPort: 48081
  type: ClusterIP

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: yudao-ingress
  namespace: yudao-cloud
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: yudao.example.com
    http:
      paths:
      - path: /system
        pathType: Prefix
        backend:
          service:
            name: yudao-system-service
            port:
              number: 48081

四、生产环境优化策略

4.1 资源限制与调度优化

resources:
  requests:
    memory: "512Mi"
    cpu: "250m"
  limits:
    memory: "1Gi"
    cpu: "500m"
affinity:
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 100
      podAffinityTerm:
        labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - yudao-system
        topologyKey: kubernetes.io/hostname

4.2 监控与日志收集

集成Prometheus和Grafana进行监控:

# Prometheus监控配置
metrics:
  enabled: true
  path: /actuator/prometheus
  port: 48081

# 日志收集配置
logging:
  level:
    root: INFO
    com.yudao: DEBUG
  file:
    path: /var/log/yudao
    max-size: 10MB
    max-backup: 5

4.3 健康检查与自愈机制

livenessProbe:
  httpGet:
    path: /actuator/health
    port: 48081
  initialDelaySeconds: 120
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 3

readinessProbe:
  httpGet:
    path: /actuator/health/readiness
    port: 48081
  initialDelaySeconds: 30
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 1

五、CI/CD流水线设计

5.1 GitLab CI/CD配置

创建.gitlab-ci.yml实现自动化部署:

stages:
  - build
  - test
  - docker-build
  - deploy

variables:
  DOCKER_REGISTRY: registry.example.com
  KUBE_NAMESPACE: yudao-cloud

build:
  stage: build
  image: maven:3.8.4-openjdk-8
  script:
    - mvn clean package -DskipTests
  artifacts:
    paths:
      - */target/*.jar

docker-build:
  stage: docker-build
  image: docker:20.10
  services:
    - docker:20.10-dind
  script:
    - docker build -t $DOCKER_REGISTRY/yudao-system:${CI_COMMIT_SHORT_SHA} ./yudao-module-system/
    - docker push $DOCKER_REGISTRY/yudao-system:${CI_COMMIT_SHORT_SHA}
  only:
    - master

deploy-prod:
  stage: deploy
  image: bitnami/kubectl:latest
  script:
    - kubectl set image deployment/yudao-system yudao-system=$DOCKER_REGISTRY/yudao-system:${CI_COMMIT_SHORT_SHA} -n $KUBE_NAMESPACE
    - kubectl rollout status deployment/yudao-system -n $KUBE_NAMESPACE
  environment:
    name: production
  only:
    - master

5.2 部署状态监控看板

使用Grafana创建部署监控看板:

监控指标正常范围告警阈值
CPU使用率< 70%> 85%
内存使用率< 75%> 90%
JVM堆内存< 80%> 95%
响应时间< 200ms> 500ms
错误率< 1%> 5%

六、故障排查与性能优化

6.1 常见问题排查指南

# 查看Pod状态
kubectl get pods -n yudao-cloud

# 查看Pod日志
kubectl logs -f <pod-name> -n yudao-cloud

# 进入Pod调试
kubectl exec -it <pod-name> -n yudao-cloud -- /bin/bash

# 查看服务发现
kubectl get endpoints -n yudao-cloud

# 资源使用情况
kubectl top pods -n yudao-cloud

6.2 性能优化建议

  1. JVM调优

    -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45
    
  2. 容器资源分配

    • 根据实际负载动态调整CPU和内存限制
    • 设置合理的QoS类别确保关键服务优先级
  3. 网络优化

    • 使用Service Mesh进行服务间通信优化
    • 配置网络策略限制不必要的网络访问

七、安全最佳实践

7.1 容器安全加固

securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  capabilities:
    drop:
    - ALL
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false

7.2 密钥管理方案

env:
- name: DATABASE_PASSWORD
  valueFrom:
    secretKeyRef:
      name: mysql-secret
      key: password
- name: REDIS_PASSWORD
  valueFrom:
    secretKeyRef:
      name: redis-secret
      key: password

总结

通过本文的详细指南,你已经掌握了yudao-cloud的完整Docker化部署流程和Kubernetes集群管理方案。从基础的Docker Compose部署到生产级的Kubernetes集群管理,从简单的容器化到完整的CI/CD流水线,这些实践方案能够帮助你构建稳定、高效、可扩展的微服务部署体系。

关键要点回顾:

  • 🚀 采用标准化的Dockerfile确保构建一致性
  • 🔄 利用Docker Compose简化多服务编排
  • ⚙️ 通过Kubernetes实现弹性伸缩和高可用
  • 📊 集成监控告警体系保障服务稳定性
  • 🔒 实施安全最佳实践保护容器环境

随着业务的不断发展,建议持续优化部署策略,结合实际情况调整资源分配和监控阈值,确保系统始终处于最佳运行状态。

【免费下载链接】yudao-cloud ruoyi-vue-pro 全新 Cloud 版本,优化重构所有功能。基于 Spring Cloud Alibaba + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城、CRM、ERP、AI 大模型等功能。你的 ⭐️ Star ⭐️,是作者生发的动力! 【免费下载链接】yudao-cloud 项目地址: https://gitcode.com/gh_mirrors/yu/yudao-cloud

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值