Включите зависимости Go в Docker-контейнер, используя моно репо - PullRequest
1 голос
/ 21 апреля 2019

У меня есть моно репо со структурой.

mono-repo
- serviceA
 - main.go
 - Dockerfile
-serviceB
 - main.go
 - Dockerfile
go.mod
go.sum

Файл Docker в сервисе A содержит следующий код.

FROM golang

ENV GO111MODULE=on

WORKDIR /app

COPY . .

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

ENTRYPOINT ["/app/serviceA"]

Я хочу построить образ Docker и включить зависимости из корня моего моно-репо в контейнер, в настоящее время я получаю сообщение об ошибке, в котором говорится, что при запуске

не удается найти ни один из пакетов зависимостей.

Docker build -t serviceA.

Пока я не помещу go.mod в сервис A, я не вижу хорошего способа достичь того, чего я хочу. Размещая go.mod внутри сервиса, я чувствую, что теряю преимущество совместного использования сервисов в репо.

1 Ответ

1 голос
/ 21 апреля 2019

Размещая go.mod внутри сервиса, я чувствую, что теряю преимущество совместного использования сервисов зависимостями в репо.

Тем не менее, этот подход наблюдается здесь или там , где COPY go.mod .COPY go.sum .) сопровождается RUN go mod download.

#This is the ‘magic’ step that will download all the dependencies that are specified in 
# the go.mod and go.sum file.
# Because of how the layer caching system works in Docker, the  go mod download 
# command will _ only_ be re-run when the go.mod or go.sum file change 
# (or when we add another docker instruction this line)
RUN go mod download
...