Spring Boot 3.3 + MyBatis + Nacos + MinIO + Kubernetes 全栈学习项目。
功能:登录/网红宠物 CRUD/头像上传/生活照管理/分页排序。
| 层 | 技术 |
|---|---|
| 框架 | Spring Boot 3.3.7 |
| 持久层 | MyBatis 4.0 |
| 数据库 | MySQL 8 |
| 缓存 | Redis 7 |
| 配置中心 | Nacos 2.5 |
| 对象存储 | MinIO |
| 容器编排 | Kubernetes (kind) |
| 构建工具 | Maven |
├── sql/init.sql # 数据库初始化脚本
├── docs/local-dev-summary.md # 详细学习笔记
├── k8s/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── external-services.yaml
├── Dockerfile
├── docker-compose.yml
└── src/main/java/com/example/demo/
├── config/MinioConfig.java
├── controller/
│ ├── HelloController.java
│ └── LoginController.java
├── service/
│ ├── MinioService.java
│ ├── PetPhotoService.java
│ ├── PetService.java
│ └── UserService.java
├── mapper/
│ ├── GreetingMapper.java
│ ├── PetMapper.java
│ ├── PetPhotoMapper.java
│ └── UserMapper.java
└── model/
├── Greeting.java
├── Pet.java
├── PetPhoto.java
└── User.java
docker run -d --name mysql8 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=@Song5257 \
mysql:8.0
docker run -d --name redis -p 6379:6379 redis:7-alpine
docker run -d --name nacos -p 8848:8848 -p 9848:9848 \
-e MODE=standalone nacos/nacos-server:v2.5.1
docker run -d --name minio -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123 \
minio/minio server /data --console-address :9001docker exec -i mysql8 mysql -uroot -p'@Song5257' < sql/init.sqldocker exec minio mc alias set local http://localhost:9000 admin admin123
docker exec minio mc mb local/zoocurl -X POST "http://localhost:8848/nacos/v1/cs/configs" \
-d 'dataId=zoo.properties' -d 'group=DEFAULT_GROUP' -d 'type=properties' \
--data-urlencode 'content=spring.datasource.url=jdbc:mysql://localhost:3306/zoo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=@Song5257
spring.data.redis.host=localhost
spring.data.redis.port=6379
minio.endpoint=http://localhost:9000
minio.access-key=admin
minio.secret-key=admin123
minio.bucket=zoo
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB'mvn spring-boot:run浏览器打开 http://localhost:8080/login.html,账号 admin / 123456。
# 创建集群
kind create cluster --name demo-cluster
# 连接服务到 kind 网络
docker network connect kind mysql8 redis nacos minio
# 构建部署
mvn clean package -DskipTests
docker build -t zoo:0.0.1 .
kind load docker-image zoo:0.0.1 --name demo-cluster
kubectl apply -f k8s/
kubectl port-forward deployment/zoo 9090:8080 &| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/login |
登录 |
| GET | /api/user |
当前用户 |
| POST | /api/logout |
登出 |
| GET | /api/zoos?page=1&size=5&orderBy=followers&orderDir=DESC |
宠物列表(分页+排序) |
| POST | /api/zoos |
新增宠物 |
| PUT | /api/zoos/{id} |
编辑宠物 |
| DELETE | /api/zoos/{id} |
删除宠物 |
| POST | /api/zoos/{id}/avatar |
上传头像 |
| GET | /api/zoos/{id}/photos |
获取生活照 |
| POST | /api/zoos/{id}/photos |
上传生活照 |
| DELETE | /api/photos/{id} |
删除生活照 |