Как настроить открытый порт докера для приложения микро-службы? - PullRequest
0 голосов
/ 21 февраля 2019

Извините. Я узнал о 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)

Для развертывания микро сервисов в докере я не знаю, как настроитьпорт в контейнере докера.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете установить порт для go-micro-серверов, используя флаг server_address (см. Их cli package ) или MICRO_SERVER_ADDRESS env var (см. cmd doc ).

Как только вы это сделаете, я предлагаю вам поэкспериментировать с подключением к вашему сервису без Docker.Как только все это заработает, вы можете запустить его с Docker, , используя флаг -p .

...