Skip to content

SongSong7/zoo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dog Demo

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

快速启动

1. 启动依赖服务

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 :9001

2. 初始化数据库

docker exec -i mysql8 mysql -uroot -p'@Song5257' < sql/init.sql

3. 创建 MinIO Bucket

docker exec minio mc alias set local http://localhost:9000 admin admin123
docker exec minio mc mb local/zoo

4. 推送配置到 Nacos

curl -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'

5. 启动应用

mvn spring-boot:run

浏览器打开 http://localhost:8080/login.html,账号 admin / 123456

K8s 部署(本地 kind)

# 创建集群
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 &

API 概览

方法 路径 说明
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} 删除生活照

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors