Docker и gRP C - соединение закрыто - PullRequest
0 голосов
/ 30 марта 2020

Прямо в точку. Я пытался переместить некоторые микросервисы в docker контейнеры. Для простоты предположим, что у вас есть два микросервиса на одном компьютере, назовите его A и B. Оба микросервиса используют gRP C. Микросервис A хочет вызвать процедуру внутри B. B находится внутри контейнера docker и находится на той же машине, где работает A, но не в контейнере. Когда A вызывает процедуру, я получаю rpcerror: code = Unavailable desc = connection closed.

Я запустил B с: docker run -it -p 51001:51001 B

Это Dockerfile

FROM golang as builder
WORKDIR /go/src/b
RUN \
    git clone bla bla bla bla /go/src/b \
    && GOOS=linux GOARCH=amd64 \
    go get && CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static"' -o main .
FROM alpine:latest
RUN apk --no-cache add ca-certificates && apk add --update bash
WORKDIR /root/
COPY --from=builder /go/src/b/main .
COPY --from=builder /go/src/b/.env .
EXPOSE 51001
CMD ["./main"]

У меня есть проверил порты и все выглядит нормально, как внутри контейнера, так и на хост-машине.

Мой хост-компьютер поставляется с MacOS.

При запуске без контейнеров все работает нормально. Так что это как-то связано с docker, grp c с docker, некоторыми сетевыми вещами, или может быть даже 42 ... не знаю. Кто-то?

Если вам нужна другая информация, просто спросите.

...