У меня есть два модуля go github.com/myuser/mymainrepo
и github.com/myuser/commonrepo
Вот как у меня файлы на моем локальном компьютере
- allmyrepos
- mymainrepo
- Dockerfile
- go.mod
- commonrepo
- go.mod
mymainrepo / go .mod
...
require (
github.com/myuser/commonrepo
)
replace (
github.com/myuser/commonrepo => ../commonrepo
)
Работает хорошо, я могу делать с ним локальную разработку. Проблема возникает, когда я создаю docker образ mymainrepo
mymainrepo / Dockerfile
...
WORKDIR /go/src/mymainrepo
COPY go.mod go.sum ./
RUN go mod download
COPY ./ ./
RUN go build -o appbinary
...
Здесь replace
заменяет github.com/myuser/commonrepo
на ../commonrepo
но в Docker /go/src/commonrepo
не существует.
Я создаю образ Docker на CI / CD, который нужно получать напрямую с удаленного URL-адреса github, но мне также нужно выполнить локальную разработку на commonrepo
. Как я могу сделать и то, и другое?
Я попытался поместить все свои файлы в GOPATH
, поэтому это ~/go/src/github.com/myuser/commonrepo
и go/src/github.com/myuser/mymainrepo
. И я удалил директиву replace
. Но он ищет commonrepo
внутри ~/go/pkg/mod/...
, загруженный с github.