1

请问,我学过go-micro,知道微服务客户端不需要知道微服务部署在哪个ip和端口。当服务自己运行时,端口是随机设置的,服务定位它的服务名称,如go.micro.api.user.

服务端运行如下:

     userService := micro.NewService(micro.Name("go.micro.api.user"))
     userService.Init()
     user.RegisterUserHandler(userService.Server(), new(User), api.WithEndpoint(&api.Endpoint{
          Name: "User.GetToken",
          Path: []string{"/user/token/"},
          Method: []string{"POST"},
          Handler: http.Handler,
     }),api.WithEndpoint(&api.Endpoint{
          Name: "User.GetUserName",
          Path: []string{"/user/username/"},
          Method: []string{"GET"},
          Handler: http.Handler,
     }))

    if er := userService.Run(); er != nil {
        panic(er)
    }

客户端如:

    service := micro.NewService(micro.Name("go.micro.api.user"))
    service.Init()

    // Create new greeter client
    userService := user.NewUserService("go.micro.api.user", service.Client())

    // Call the greeter
    rsp, err := userService.GetToken(context.TODO(), &user.Request{Username: "John", Password: "123"})
    if err != nil {
        fmt.Println(err)
        return
    }

    // Print response
    fmt.Println(rsp)

要在 docker 中部署微服务,我不知道如何在 docker 容器中配置端口。

4

1 回答 1

1

server_address您可以使用标志(请参阅他们的cli 包)或MICRO_SERVER_ADDRESSenv var(请参阅cmd doc )设置 go-micro 服务器的端口。

一旦你这样做了,我建议你先尝试在没有Docker 的情况下连接到你的服务。一旦一切正常,您可以使用 Docker使用 -p 标志运行它。

于 2019-02-21T13:38:04.700 回答