6050d11f27
- 创建基于 CloudWego Hertz 的 Go 微服务脚手架 - 集成 Nacos 服务注册/发现功能 - 添加 gRPC 客户端支持 - 实现环境变量配置管理 (.env.example) - 添加 HTTP 中间件 (Recovery, AccessLog, CORS) - 配置 Gitea CI/CD 构建部署流程 BREAKING CHANGE: 项目结构调整,从简单的 API 服务升级为完整的微服务架构
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
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"
|
|
)
|
|
|
|
func init() {
|
|
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.WithExitWaitTime(0),
|
|
)
|
|
SetupRoutes(h)
|
|
|
|
if os.Getenv("NACOS_SERVICE_NAME") != "" {
|
|
if err := nacos.RegisterService(); err != nil {
|
|
logger.Warn("Nacos", "服务注册失败: ", err)
|
|
} else {
|
|
logger.Info("Nacos", "服务注册成功")
|
|
}
|
|
}
|
|
|
|
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", "服务已停止")
|
|
}
|