Просто используйте go install -i ./vendor/...
.
Рассмотрите следующий Dockerfile:
FROM golang:1.10-alpine
ARG APP
ENV PTH $GOPATH/src/$APP
WORKDIR $PTH
# Pre-compile vendors.
COPY vendor/ $PTH/vendor/
RUN go install -i ./vendor/...
ADD . $PTH/
# Display time taken and the list of the packages being compiled.
RUN time go build -v
Вы можете протестировать его, выполнив что-то вроде:
docker build -t test --build-arg APP=$(go list .) .
В проекте Iя работаю, без предварительной компиляции, это занимает ~ 12 секунд с пакетом 90+ каждый раз, после, это занимает ~ 1.2 с только 3 (только локальные).
Если у вас все еще есть "не могу найтипакет ", значит, отсутствуют продавцы.Повторный запуск dep ensure
должен исправить это.
Другой совет, не связанный с Go, заключается в том, чтобы ваш .dockerignore
начинался с *
.т.е. игнорируй все и затем добавляй в белый список то, что тебе нужно.