请问,学习过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容器中配置端口。
最佳答案
您可以使用 server_address
标志(参见 cli package )或 MICRO_SERVER_ADDRESS
env var(参见 cmd doc )为 go-micro 服务器设置端口。
一旦你这样做了,我建议你先尝试连接到你的服务而不 Docker。一切正常后,您可以使用 Docker 运行它,using the -p flag .
关于docker - 如何为微服务应用程序配置 docker 公开端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801203/