Перейти 1.11 неизвестный путь импорта для собственного пакета в сборке Docker
Я переносил некоторый код для работы с модулями Go 1.11, и я могу собрать его из оболочки, но не из Docker.
Соответствующие разделы Dockerfile:
WORKDIR /goscout
COPY ["go.mod", "go.sum", "./"]
RUN GO111MODULE=on go get -u=patch
COPY *.go ./
RUN GO111MODULE=on go build -v -ldflags "-linkmode external -extldflags -static" -o GoScout -a .
Когда Docker выполняет последнюю команду в приведенном выше фрагменте, я получаю эту ошибку:
can't load package: package github.com/triplestrange/StrangeScout/goscout: unknown import path "github.com/triplestrange/StrangeScout/goscout": ambiguous import: found github.com/triplestrange/StrangeScout/goscout in multiple modules:
github.com/triplestrange/StrangeScout/goscout (/goscout)
github.com/triplestrange/StrangeScout v0.3.0 (/go/pkg/mod/github.com/triplestrange/!strange!scout@v0.3.0/goscout)
Я не получаю это в оболочке, поэтому я предполагаю, что не копирую некоторые файлы правильно. Но перед запуском этой команды я скопировал go.mod
, go.sum
, а также *.go
, поэтому я не знаю, чего не хватает.
1 ответ
Решение
Убедитесь, что вы правильно инициализировали модули для своего проекта
go mod init github.com/triplestrange/StrangeScout/goscout
так что содержание вашего go.mod
является
module github.com/triplestrange/StrangeScout/goscout
И тогда вы можете использовать свой текущий Dockerfile без каких-либо изменений.
Там нет необходимости устанавливать GO111MODULE=on
так как ты бежишь go
команды за пределами $GOPATH
Cker docker build -t goscout. Отправка контекста сборки демону Docker 47.1 КБ Шаг 1/11: ОТ Голанга: последний AS строитель ---> fb7a47d8605b Шаг 2/11: WORKDIR /goscout ---> работает в e9786fe5ab53 Снятие промежуточного контейнера e9786fe5ab53 ---> 6d101e346175 Шаг 3/11: COPY ./ ./ ---> 7081c0b47dc9 Шаг 4/11: ЗАПУСТИТЬ иди -d -v ./... ---> Работает в 3ce69359ae88 go: find github.com/go-sql-driver/mysql v1.4.0 go: find github.com/gorilla/mux v1.6.2 go: скачивание github.com/gorilla/mux v1.6.2 go: скачивание github.com/go-sql-driver/mysql v1.4.0 Снятие промежуточного контейнера 3ce69359ae88 ... ---> 3df0dbca80e5 Успешно построенный 3df0dbca80e5 Успешно помечены goscout: последние