feat: 添加微服务模板基础架构
- 创建基于 CloudWego Hertz 的 Go 微服务脚手架 - 集成 Nacos 服务注册/发现功能 - 添加 gRPC 客户端支持 - 实现环境变量配置管理 (.env.example) - 添加 HTTP 中间件 (Recovery, AccessLog, CORS) - 配置 Gitea CI/CD 构建部署流程 BREAKING CHANGE: 项目结构调整,从简单的 API 服务升级为完整的微服务架构
This commit is contained in:
+34
-16
@@ -1,39 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"apiServer_service/utils/logger"
|
||||
"apiServer_service/utils/nacos"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"github.com/cloudwego/hertz/pkg/app/server"
|
||||
"github.com/joho/godotenv"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// 在 init 中加载 .env 文件
|
||||
err := godotenv.Load(".env")
|
||||
if err != nil {
|
||||
log.Fatal("Error loading .env file")
|
||||
if err := godotenv.Load(".env"); err != nil {
|
||||
fmt.Println("Warning: .env file not found, using system environment variables")
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
host := os.Getenv("HOST")
|
||||
port := os.Getenv("PORT")
|
||||
if host == "" || port == "" {
|
||||
logger.Fatal("Config", "HOST 和 PORT 环境变量必须设置")
|
||||
}
|
||||
|
||||
h := server.Default(
|
||||
server.WithHostPorts(host + ":" + port),
|
||||
server.WithHostPorts(host+":"+port),
|
||||
server.WithExitWaitTime(0),
|
||||
)
|
||||
SetupRoutes(h)
|
||||
|
||||
// 注册 nacos 服务
|
||||
err := nacos.RegisterService()
|
||||
if err != nil {
|
||||
log.Println("nacos register service error", err)
|
||||
if os.Getenv("NACOS_SERVICE_NAME") != "" {
|
||||
if err := nacos.RegisterService(); err != nil {
|
||||
logger.Warn("Nacos", "服务注册失败: ", err)
|
||||
} else {
|
||||
logger.Info("Nacos", "服务注册成功")
|
||||
}
|
||||
}
|
||||
|
||||
// 启动服务器
|
||||
err = h.Run()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return
|
||||
go func() {
|
||||
h.Spin()
|
||||
}()
|
||||
|
||||
logger.Info("Server", fmt.Sprintf("服务启动于 %s:%s", host, port))
|
||||
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-quit
|
||||
|
||||
logger.Info("Server", "正在关闭服务...")
|
||||
if err := h.Close(); err != nil {
|
||||
logger.Error("Server", "关闭失败: ", err)
|
||||
}
|
||||
logger.Info("Server", "服务已停止")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user