Skills 系列 docker-deploy

Docker 部署 Skill 说明

这个技能专为你的 Spring Boot+ KingbaseES + MinIO 技术栈定制,覆盖从本地开发到生产部署的容器化全流程。

三块核心内容

1. Dockerfile 模板 --- 开箱即用
模板 用途
Spring Boot 多阶段构建 Maven 编译 → JRE 运行,镜像瘦身,内置时区 + 健康检查
Vue3 前端容器化 Node 编译 → Nginx 运行,同样多阶段构建

关键设计点:

  • 多阶段构建:编译环境和运行环境分离,最终镜像只有 JRE,不携带 Maven/源码
  • 健康检查/actuator/health 端点让 Docker 和 Compose 能判断应用是否就绪
  • 时区处理 :挂载 Asia/Shanghai 时区,避免日志时间差 8 小时
2. docker-compose 编排 --- 一键启动全家桶

一套 YAML 拉起四个服务:

复制代码
┌──────────────────────────────────────────────┐
│                  app-net 网络                 │
│                                               │
│  ┌──────────┐  ┌───────────┐  ┌───────────┐  │
│  │ system │  │ kingbase  │  │   minio   │  │
│  │  :8080   │  │  :54321   │  │ :9000/9001│  │
│  └────┬─────┘  └─────┬─────┘  └─────┬─────┘  │
│       │              │              │         │
│       └──────┬───────┘              │         │
│              │ depends_on           │         │
│       ┌──────┴──────────────────────┘         │
│       │ 启动顺序: kingbase就绪 → app启动       │
│       │          minio启动后 → app启动         │
│       └────────────────────────────────────── │
│  ┌──────────┐                                 │
│  │  xf-ui   │ ← nginx 静态服务 :80             │
│  └──────────┘                                 │
└──────────────────────────────────────────────┘

关键细节:

  • 数据持久化 :KingbaseES 和 MinIO 的数据通过 volumes 挂载,容器销毁数据不丢
  • 启动依赖depends_on + condition: service_healthy 确保数据库就绪后才启动应用
  • 网络隔离 :所有服务在 app-net 内网互通,只暴露必要端口
3. 运维命令速查

日常操作都列好了:

复制代码
docker-compose up -d --build     # 首次/代码变更后重建
docker-compose logs -f app       # 实时看应用日志
docker exec -it xf-system sh     # 进容器排查
docker-compose down              # 停止(数据卷保留)
docker-compose down -v           # 完全清理(⚠️ 数据丢失)

使用方式

直接说「Docker 部署,帮我写一个System 项目的 compose 文件」,就会按你项目的实际配置生成可用的编排文件。

文件目录和文件下载