refactor: centralize protobuf and remove go-zero
This commit is contained in:
@@ -1,70 +0,0 @@
|
||||
# FTS微服务更新日志
|
||||
|
||||
所有FTS微服务的重要更改都将记录在此文件中。
|
||||
|
||||
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
||||
并且此项目遵循 [语义版本控制](https://semver.org/lang/zh-CN/)。
|
||||
|
||||
## [v2.0.0] - 2024-10-02
|
||||
|
||||
### 重大更新 🚀
|
||||
- **升级Go版本到1.25.1** - 使用最新Go版本,获得更好的性能和特性
|
||||
- **现代化项目架构** - 参考最佳实践重构项目结构
|
||||
- **移除gRPC依赖** - 简化架构,专注HTTP API服务
|
||||
|
||||
### 新增功能 ✨
|
||||
- **现代化构建工具链**
|
||||
- 添加完整的Makefile,支持多平台构建
|
||||
- Docker容器化支持,包含优化的多阶段构建
|
||||
- docker-compose完整开发环境配置
|
||||
- **增强的错误处理系统**
|
||||
- 统一的业务错误定义和处理
|
||||
- 标准化的响应格式
|
||||
- 详细的错误码分类
|
||||
- **完善的健康检查机制**
|
||||
- 详细健康检查端点(/health)
|
||||
- 简单健康检查端点(/health/simple)
|
||||
- 系统资源监控
|
||||
- 依赖服务状态检查
|
||||
- **优雅关闭机制** - 支持服务的优雅启动和关闭
|
||||
- **版本信息端点** - /version接口显示构建信息
|
||||
|
||||
### 开发体验改进 🛠️
|
||||
- **开发工具支持**
|
||||
- golangci-lint代码检查
|
||||
- gosec安全扫描
|
||||
- 代码覆盖率测试
|
||||
- 自动化格式化
|
||||
- **完整的项目文档** - 详细的README和使用指南
|
||||
- **标准化项目结构** - 清晰的目录组织
|
||||
|
||||
### 技术升级 📦
|
||||
- 升级bsm-sdk/core到v0.0.88
|
||||
- 保持所有核心依赖的最新兼容版本
|
||||
- 优化依赖管理,移除不必要的包
|
||||
|
||||
### 性能优化 ⚡
|
||||
- 改进的配置加载机制
|
||||
- 更好的资源管理
|
||||
- 优化的HTTP服务器配置
|
||||
|
||||
### 安全增强 🔒
|
||||
- 增强的错误处理,避免信息泄露
|
||||
- 更安全的依赖配置
|
||||
- 标准化的认证和授权准备
|
||||
|
||||
### 运维支持 📊
|
||||
- 详细的健康检查
|
||||
- 结构化日志支持
|
||||
- 监控友好的端点设计
|
||||
- 容器化部署支持
|
||||
|
||||
## [v1.0.0] - 2024-xx-xx
|
||||
|
||||
### 新增
|
||||
- 初始版本发布
|
||||
- 文件传输服务核心功能
|
||||
- OSS存储支持
|
||||
- 本地存储支持
|
||||
- 文件上传接口
|
||||
- 健康检查接口
|
||||
@@ -1,59 +0,0 @@
|
||||
# 构建阶段
|
||||
FROM golang:1.26.5-alpine AS builder
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 安装必要的工具
|
||||
RUN apk add --no-cache git ca-certificates tzdata
|
||||
|
||||
# 设置Go环境变量
|
||||
ENV GO111MODULE=on \
|
||||
GOPROXY=https://goproxy.cn,direct \
|
||||
GOPRIVATE=git.apinb.com/* \
|
||||
GONOPROXY=git.apinb.com/* \
|
||||
GOINSECURE=git.apinb.com/* \
|
||||
GONOSUMDB=git.apinb.com/* \
|
||||
GOEXPERIMENT=jsonv2
|
||||
|
||||
# 复制go模块文件
|
||||
COPY go.mod go.sum ./
|
||||
|
||||
# 下载依赖
|
||||
RUN go mod download
|
||||
|
||||
# 复制源代码
|
||||
COPY . .
|
||||
|
||||
# 构建应用
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w -s' -o fts ./cmd/main/main.go
|
||||
|
||||
# 运行阶段
|
||||
FROM alpine:latest
|
||||
|
||||
# 设置时区
|
||||
RUN apk --no-cache add ca-certificates tzdata \
|
||||
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||
&& echo "Asia/Shanghai" > /etc/timezone \
|
||||
&& apk del tzdata
|
||||
|
||||
WORKDIR /root/
|
||||
|
||||
# 从构建阶段复制二进制文件
|
||||
COPY --from=builder /app/fts .
|
||||
|
||||
# 复制配置文件
|
||||
COPY --from=builder /app/etc ./etc
|
||||
|
||||
# 创建日志目录
|
||||
RUN mkdir -p /var/log/fts
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 设置健康检查
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD curl -f http://localhost:8080/ || exit 1
|
||||
|
||||
# 运行应用
|
||||
CMD ["./fts"]
|
||||
@@ -1,167 +0,0 @@
|
||||
# FTS Service Makefile
|
||||
|
||||
# 变量定义
|
||||
APP_NAME := fts
|
||||
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "v1.0.0")
|
||||
BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S)
|
||||
GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
|
||||
GO_VERSION := $(shell go version | awk '{print $$3}')
|
||||
|
||||
# 构建标志
|
||||
LDFLAGS := -ldflags "-X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT) -w -s"
|
||||
BUILD_FLAGS := -trimpath $(LDFLAGS)
|
||||
|
||||
# 目录
|
||||
BUILD_DIR := build
|
||||
|
||||
# Go环境变量
|
||||
export GO111MODULE=on
|
||||
export GOPROXY=https://goproxy.cn,direct
|
||||
export GOPRIVATE=git.apinb.com/*
|
||||
export GONOPROXY=git.apinb.com/*
|
||||
export GOINSECURE=git.apinb.com/*
|
||||
export GONOSUMDB=git.apinb.com/*
|
||||
export GOEXPERIMENT=jsonv2
|
||||
|
||||
.PHONY: help
|
||||
help: ## 显示帮助信息
|
||||
@echo "FTS Service - 可用的命令:"
|
||||
@echo ""
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
|
||||
.PHONY: deps
|
||||
deps: ## 下载依赖
|
||||
@echo "下载Go依赖..."
|
||||
go mod download
|
||||
go mod tidy
|
||||
|
||||
.PHONY: build
|
||||
build: deps ## 构建应用
|
||||
@echo "构建应用..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
CGO_ENABLED=0 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME) ./cmd/main/main.go
|
||||
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)"
|
||||
|
||||
.PHONY: build-linux
|
||||
build-linux: deps ## 构建Linux版本
|
||||
@echo "构建Linux版本..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 ./cmd/main/main.go
|
||||
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-linux-amd64"
|
||||
|
||||
.PHONY: build-windows
|
||||
build-windows: deps ## 构建Windows版本
|
||||
@echo "构建Windows版本..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-windows-amd64.exe ./cmd/main/main.go
|
||||
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-windows-amd64.exe"
|
||||
|
||||
.PHONY: build-darwin
|
||||
build-darwin: deps ## 构建macOS版本
|
||||
@echo "构建macOS版本..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-amd64 ./cmd/main/main.go
|
||||
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)-darwin-amd64"
|
||||
|
||||
.PHONY: build-all
|
||||
build-all: build-linux build-windows build-darwin ## 构建所有平台版本
|
||||
|
||||
.PHONY: run
|
||||
run: build ## 运行应用
|
||||
@echo "启动应用..."
|
||||
./$(BUILD_DIR)/$(APP_NAME)
|
||||
|
||||
.PHONY: dev
|
||||
dev: ## 开发模式运行
|
||||
@echo "开发模式启动..."
|
||||
go run ./cmd/main/main.go
|
||||
|
||||
.PHONY: test
|
||||
test: ## 运行测试
|
||||
@echo "运行测试..."
|
||||
go test -v ./...
|
||||
|
||||
.PHONY: test-coverage
|
||||
test-coverage: ## 运行测试并生成覆盖率报告
|
||||
@echo "运行测试覆盖率..."
|
||||
go test -v -coverprofile=coverage.out ./...
|
||||
go tool cover -html=coverage.out -o coverage.html
|
||||
@echo "覆盖率报告生成: coverage.html"
|
||||
|
||||
.PHONY: lint
|
||||
lint: ## 运行代码检查
|
||||
@echo "运行代码检查..."
|
||||
@if command -v golangci-lint >/dev/null 2>&1; then \
|
||||
golangci-lint run; \
|
||||
else \
|
||||
echo "golangci-lint 未安装,使用go vet..."; \
|
||||
go vet ./...; \
|
||||
fi
|
||||
|
||||
.PHONY: fmt
|
||||
fmt: ## 格式化代码
|
||||
@echo "格式化代码..."
|
||||
go fmt ./...
|
||||
@if command -v goimports >/dev/null 2>&1; then \
|
||||
goimports -w .; \
|
||||
fi
|
||||
|
||||
.PHONY: security
|
||||
security: ## 安全检查
|
||||
@echo "运行安全检查..."
|
||||
@if command -v gosec >/dev/null 2>&1; then \
|
||||
gosec ./...; \
|
||||
else \
|
||||
echo "gosec 未安装,请运行: go install github.com/securego/gosec/v2/cmd/gosec@latest"; \
|
||||
fi
|
||||
|
||||
.PHONY: docker-build
|
||||
docker-build: ## 构建Docker镜像
|
||||
@echo "构建Docker镜像..."
|
||||
docker build -t $(APP_NAME):$(VERSION) .
|
||||
docker tag $(APP_NAME):$(VERSION) $(APP_NAME):latest
|
||||
|
||||
.PHONY: docker-run
|
||||
docker-run: ## 运行Docker容器
|
||||
@echo "运行Docker容器..."
|
||||
docker run -d --name $(APP_NAME) -p 8080:8080 $(APP_NAME):latest
|
||||
|
||||
.PHONY: docker-stop
|
||||
docker-stop: ## 停止Docker容器
|
||||
@echo "停止Docker容器..."
|
||||
docker stop $(APP_NAME) || true
|
||||
docker rm $(APP_NAME) || true
|
||||
|
||||
.PHONY: clean
|
||||
clean: ## 清理构建文件
|
||||
@echo "清理构建文件..."
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -f coverage.out coverage.html
|
||||
docker system prune -f
|
||||
|
||||
.PHONY: install-tools
|
||||
install-tools: ## 安装开发工具
|
||||
@echo "安装开发工具..."
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||
go install golang.org/x/tools/cmd/goimports@latest
|
||||
go install github.com/securego/gosec/v2/cmd/gosec@latest
|
||||
|
||||
.PHONY: mod-update
|
||||
mod-update: ## 更新依赖
|
||||
@echo "更新依赖..."
|
||||
go get -u ./...
|
||||
go mod tidy
|
||||
|
||||
.PHONY: version
|
||||
version: ## 显示版本信息
|
||||
@echo "应用名称: $(APP_NAME)"
|
||||
@echo "版本: $(VERSION)"
|
||||
@echo "构建时间: $(BUILD_TIME)"
|
||||
@echo "Git提交: $(GIT_COMMIT)"
|
||||
@echo "Go版本: $(GO_VERSION)"
|
||||
|
||||
.PHONY: all
|
||||
all: clean deps build test lint ## 执行完整的构建流程
|
||||
|
||||
# 默认目标
|
||||
.DEFAULT_GOAL := help
|
||||
@@ -1,95 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
fts:
|
||||
build: .
|
||||
container_name: fts-service
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- ENV=dev
|
||||
- GIN_MODE=release
|
||||
volumes:
|
||||
- ./etc:/root/etc:ro
|
||||
- ./logs:/var/log/fts
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
- etcd
|
||||
networks:
|
||||
- fts-network
|
||||
restart: unless-stopped
|
||||
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
container_name: fts-postgres
|
||||
environment:
|
||||
POSTGRES_DB: fts
|
||||
POSTGRES_USER: fts
|
||||
POSTGRES_PASSWORD: fts123456
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- fts-network
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: fts-redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
networks:
|
||||
- fts-network
|
||||
restart: unless-stopped
|
||||
|
||||
etcd:
|
||||
image: quay.io/coreos/etcd:v3.5.9
|
||||
container_name: fts-etcd
|
||||
environment:
|
||||
- ETCD_NAME=etcd-server
|
||||
- ETCD_DATA_DIR=/etcd-data
|
||||
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
|
||||
- ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
|
||||
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
|
||||
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380
|
||||
- ETCD_INITIAL_CLUSTER=etcd-server=http://0.0.0.0:2380
|
||||
- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
|
||||
- ETCD_INITIAL_CLUSTER_STATE=new
|
||||
ports:
|
||||
- "2379:2379"
|
||||
- "2380:2380"
|
||||
volumes:
|
||||
- etcd_data:/etcd-data
|
||||
networks:
|
||||
- fts-network
|
||||
restart: unless-stopped
|
||||
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: fts-minio
|
||||
command: server /data --console-address ":9001"
|
||||
environment:
|
||||
MINIO_ROOT_USER: admin
|
||||
MINIO_ROOT_PASSWORD: admin123456
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
networks:
|
||||
- fts-network
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
etcd_data:
|
||||
minio_data:
|
||||
|
||||
networks:
|
||||
fts-network:
|
||||
driver: bridge
|
||||
@@ -9,7 +9,6 @@ package logic
|
||||
// "bsm/full/module/base/fts/internal/types"
|
||||
// "git.apinb.com/bsm-sdk/core/exception"
|
||||
|
||||
// "github.com/zeromicro/go-zero/core/logx"
|
||||
// )
|
||||
|
||||
// func (l *ListLogic) List(in *types.Paginate, r *http.Request) (resp *types.Base, err error) {
|
||||
|
||||
Reference in New Issue
Block a user