В настоящее время у меня есть приложение Go, использующее gRP C. Я пытаюсь написать Dockerfile, который извлекает все мои deps и затем строит мой бинарный файл.
У меня возникают проблемы, когда он не может найти мои прото файлы, они не добавляются в Git, поэтому go мод скачать не могу найти файлы. Я попытался скопировать их в каталог службы в Docker, но там говорится, что они находятся вне контекста сборки.
Моя структура
- serviceA - Dockerfile
- support / proto - proto файлы
Это мой Dockerfile
FROM golang:1.13-alpine
RUN apk add --no-cache --update \
openssh-client \
git \
ca-certificates \
make
RUN go env -w GOPRIVATE=github.com/RandomUser/*
# Enable Go Modules
ENV GO111MODULE=on
# Set the Current Working Directory inside the container
WORKDIR /app
ARG ACCESS_TOKEN
ENV ACCESS_TOKEN=$ACCESS_TOKEN
RUN git config --global url."https://randomUser:${ACCESS_TOKEN}@github.com".insteadOf "https://github.com"
# Add go.mod and go.sum first to maximize caching
COPY go.mod go.sum ./
# Copy in the project
COPY . .
# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed
RUN go mod download
# Build the Go app
RUN CGO_ENABLED=0 go build -o company
EXPOSE 50010
ENTRYPOINT ["./company"]
В моем go .mod я использую
replace github.com/randomUser/support/proto/company => ./../support/proto/company
Так мое приложение go может найти файлы, но это не работает, когда я запускаю контейнер docker с docker -compose.
Кто-нибудь сталкивался с чем-то подобным раньше?