Ошибка "путь импорта не начинается с имени хоста" при построении докеров с локальным пакетом

Я пытаюсь создать докер с локальным пакетом, но получить путь "Ошибка импорта" не начинается с имени хоста. Если мое понимание верное, мой файл Docker должен быть просто

FROM golang:onbuild
EXPOSE 8080

на основе этой статьи Развертывание серверов Go с Docker

Я использую этот код git-go-websiteskeleton как источник для построения докера. полная ошибка здесь.

import "git-go-websiteskeleton/app/common": import path does not begin with hostname
package git-go-websiteskeleton/app/common: unrecognized import path "git-go-websiteskeleton/app/common"
import "git-go-websiteskeleton/app/home": import path does not begin with hostname
package git-go-websiteskeleton/app/home: unrecognized import path "git-go-websiteskeleton/app/home"
import "git-go-websiteskeleton/app/user": import path does not begin with hostname
package git-go-websiteskeleton/app/user: unrecognized import path "git-go-websiteskeleton/app/user"

Спасибо за помощь.

Ответ 1

Приложение встроено в контейнер докеров, и вам нужно иметь свои зависимости при создании.

golang:onbuild дает компактные Dockerfiles для простых случаев, но он не будет получать ваши зависимости.

Вы можете написать свой собственный файл Docker с шагами, необходимыми для создания вашего приложения. В зависимости от того, как выглядит ваш проект, вы можете использовать что-то вроде этого:

FROM golang:1.6
ADD . /go/src/yourapplication
RUN go get github.com/jadekler/git-go-websiteskeleton
RUN go install yourapplication
ENTRYPOINT /go/bin/yourapplication
EXPOSE 8080

Это добавляет ваш источник и вашу зависимость в контейнер, создает ваше приложение, запускает его и предоставляет его под портом 8080.

Ответ 2

Попробуйте:

FROM golang:latest
RUN mkdir /go/src/app
WORKDIR /go/src/app
ADD ./HelloWorld.go ./
RUN go get
RUN go build -o main .
CMD ["/go/src/app/main"]