Files
apiServer-service/cmd/main_program/main.go
T
shiran 6050d11f27 feat: 添加微服务模板基础架构
- 创建基于 CloudWego Hertz 的 Go 微服务脚手架
- 集成 Nacos 服务注册/发现功能
- 添加 gRPC 客户端支持
- 实现环境变量配置管理 (.env.example)
- 添加 HTTP 中间件 (Recovery, AccessLog, CORS)
- 配置 Gitea CI/CD 构建部署流程

BREAKING CHANGE: 项目结构调整,从简单的 API 服务升级为完整的微服务架构
2026-04-15 11:13:38 +08:00

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", "服务已停止")
}