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") tags := flag.String("tags", `PathPrefix("/demo")`, "consul tags") 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: *appname, Addr: *addr, Port: *port, }) traefikTag := fmt.Sprintf(`traefik.http.routers.%s.rule=%s`, *appname, *tags) 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() fmt.Println("campus-demo1 service shutting down") os.Exit(0) }