DB
package config
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
// DB 数据库链接单例
var DB *gorm.DB
// Database 在中间件中初始化mysql链接
func InitDb(connString string) {
// 初始化GORM日志配置
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Info, // Log level(这里记得根据需求改一下)
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
Colorful: false, // Disable color
},
)
db, err := gorm.Open(postgres.Open(connString), &gorm.Config{
Logger: newLogger,
})
if err != nil {
log.Println("数据库连接失败", err)
panic(err)
}
sqlDB, err := db.DB()
//设置连接池
//空闲
sqlDB.SetMaxIdleConns(10)
//打开
sqlDB.SetMaxOpenConns(20)
DB = db
}
server router
package server
import (
"github.com/gin-gonic/gin"
"hn-service/api"
)
// NewRouter 路由配置
func NewRouter() *gin.Engine {
router := gin.Default()
// Simple group: v1
v1 := router.Group("/v1")
{
v1.GET("/ping", api.Ping)
v1.POST("/product_query", api.ProductQuery)
}
// Simple group: v2
v2 := router.Group("/v2")
{
v2.POST("/login", api.Ping)
}
return router
}
api handler
package api
import (
"github.com/gin-gonic/gin"
"hn-service/model"
"hn-service/service"
"hn-service/util"
)
// Ping 状态检查页面
func Ping(c *gin.Context) {
c.JSON(200, util.Response{
Code: 0,
Msg: "Pong",
})
}
func ProductQuery(c *gin.Context) {
var hnIdModel model.HnIdModel
if err := c.ShouldBind(&hnIdModel); err == nil {
poiHnEdits := service.QueryByHnIds(&hnIdModel)
c.JSON(200, util.Response{
Code: util.SUCCESS,
Data: poiHnEdits,
Msg: "查询成功",
})
} else {
c.JSON(200, util.Response{
Code: util.FAIL,
Msg: "查询失败",
})
}
}
package util
// Response 基础序列化器
type Response struct {
Code int `json:"code"`
Data interface{} `json:"data,omitempty"`
Msg string `json:"msg"`
}
const (
SUCCESS = 1
FAIL = 0
)
main
package main
import (
"hn-service/config"
"hn-service/server"
)
func main() {
// 从配置文件读取配置
config.Init()
// 装载路由
r := server.NewRouter()
r.Run(":8012")
}
dockerfile
FROM golang:alpine
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
GOPROXY="https://goproxy.cn,direct"
# 移动到工作目录:/home/www/goWebBlog 这个目录 是你项目代码 放在linux上
# 这是我的代码跟目录
# 你们得修改成自己的
WORKDIR /app
# 将代码复制到容器中
COPY . .
# 将我们的代码编译成二进制可执行文件 可执行文件名为 app
RUN go build -o app .
EXPOSE 8012
# 启动容器时运行的命令
CMD ["./app"]
makefile
docker_tag_poi_worker=192.168.106.46:5000/go-hn-service:v1
# docker_tag_poi_worker=192.168.160.20:5000/poi-hn-service:v3
docker_build_worker:
docker build -t $(docker_tag_poi_worker) -f Dockerfile .
docker_push_worker:
docker push $(docker_tag_poi_worker)
docker_build_push_worker:
make docker_build_worker
make docker_push_worker











网友评论