HotGo生产部署:Docker容器化与Kubernetes集群部署终极指南
HotGo是一个基于Vue和GoFrame2.0开发的全栈前后端分离开发基础平台,集成jwt鉴权、动态路由、动态菜单、casbin鉴权、消息队列、定时任务等丰富功能。本文将为您详细介绍HotGo项目的生产环境部署方案,包括Docker容器化和Kubernetes集群部署的完整流程。
🚀 Docker容器化部署
准备工作与环境配置
在开始Docker部署之前,请确保您的系统已安装Docker和Docker Compose。HotGo项目提供了完整的Docker支持文件,位于server/manifest/docker/目录下。
Dockerfile解析
HotGo的Dockerfile采用Alpine Linux作为基础镜像,确保镜像体积最小化:
FROM loads/alpine:3.8
ENV WORKDIR /app
ADD hack $WORKDIR/hack/
ADD manifest/config $WORKDIR/manifest/config/
ADD resource $WORKDIR/resource/
ADD ./temp/linux_amd64/hotgo $WORKDIR/hotgo
ADD ./manifest/docker/entrypoint.sh $WORKDIR/entrypoint.sh
RUN chmod +x $WORKDIR/hotgo
RUN chmod +x $WORKDIR/entrypoint.sh
WORKDIR $WORKDIR
CMD ./entrypoint.sh
构建与运行Docker镜像
使用项目提供的docker.sh脚本可以快速构建和运行容器:
# 构建镜像
docker build -t hotgo:latest .
# 运行容器
docker run -d -p 8000:8000 --name hotgo-container hotgo:latest
生产环境配置调整
在部署到生产环境前,务必修改server/manifest/config/config.yaml配置文件:
- 关闭debug模式
- 设置运行环境为生产模式
- 配置正确的数据库连接信息
- 调整日志路径和级别
☸️ Kubernetes集群部署
Kustomize配置管理
HotGo提供了Kubernetes部署模板,位于server/manifest/deploy/kustomize/目录。使用Kustomize可以轻松管理不同环境的配置。
Deployment配置
部署配置文件定义了Pod的副本数、资源限制等关键参数:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hotgo-deployment
labels:
app: hotgo
spec:
replicas: 3
selector:
matchLabels:
app: hotgo
template:
metadata:
labels:
app: hotgo
spec:
containers:
- name: hotgo
image: hotgo:latest
ports:
- containerPort: 8000
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
Service配置
创建Service暴露服务到集群内部或外部:
apiVersion: v1
kind: Service
metadata:
name: hotgo-service
spec:
selector:
app: hotgo
ports:
- protocol: TCP
port: 80
targetPort: 8000
type: LoadBalancer
Ingress配置(可选)
如果需要通过域名访问,可以配置Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hotgo-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: hotgo.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hotgo-service
port:
number: 80
📊 监控与日志管理
健康检查配置
在Deployment中添加健康检查确保服务可用性:
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
日志收集
建议使用EFK或Loki stack进行日志收集和分析,确保生产环境的问题排查效率。
🔧 持续集成与部署
GitHub Actions自动化
可以配置GitHub Actions实现自动构建和部署:
name: Deploy to Kubernetes
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build Docker image
run: docker build -t hotgo:${{ github.sha }} .
- name: Deploy to Kubernetes
uses: kubectl-action@v1
with:
command: apply -f server/manifest/deploy/kustomize/overlays/production/
🎯 部署最佳实践
- 多环境配置:使用Kustomize overlay管理开发、测试、生产环境
- 资源限制:合理设置CPU和内存限制,避免资源竞争
- 滚动更新:配置适当的strategy确保无缝升级
- 备份策略:定期备份数据库和重要配置文件
- 监控告警:设置关键指标监控和自动告警
通过本文介绍的Docker容器化和Kubernetes集群部署方案,您可以轻松地将HotGo项目部署到生产环境,享受容器化技术带来的高可用性、弹性伸缩和便捷管理优势。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



