package main import ( "context" "flag" "fmt" "os" "os/signal" "time" "myschools.me/campus/demo-1/consul" "myschools.me/campus/demo-1/gin" ) func main() { appname := flag.String("appname", "demo1", "app name for current") port := flag.Int("port", 8080, "port for gin") addr := flag.String("addr", "localhost", "ip address for gin") flag.Parse() consul.Init(nil) gin.Service(&gin.Config{ RootPath: `/demo1`, Addr: *addr, Port: *port, }) traefikTag := fmt.Sprintf("traefik.http.routers.%s.rule=PathPrefix(`/demo1`)", *appname) if err := consul.RegisterAPI(*appname, *addr, *port, traefikTag); err != nil { fmt.Println("注册失败", err.Error()) } // 服务停止相应 c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) <-c _, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() //取消注册 err := consul.DeRegister(*appname, *addr, *port) if err != nil { fmt.Println("Error: ", err) } fmt.Println("campus-demo1 service shutting down") os.Exit(0) }