Ошибка "путь импорта не начинается с имени хоста" при построении докеров с локальным пакетом
Я пытаюсь создать докер с локальным пакетом, но получить путь "Ошибка импорта" не начинается с имени хоста. Если мое понимание верное, мой файл 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"]