使用本地包构建docker时出现“导入路径不以主机名开头”的错误

15

我正在尝试使用本地包构建Docker,但是出现了“导入路径不以主机名开头”的错误。如果我的理解是正确的,那么我的Dockerfile应该只是

FROM golang:onbuild
EXPOSE 8080

基于这篇文章“使用Docker部署Go服务器”

我使用这段代码“git-go-websiteskeleton”作为构建docker的源。完整的错误信息在这里。

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"

感谢您的帮助。


你有按照README中的说明进行操作吗? git-go-websiteskeleton 不在你的GOPATH中。 - JimB
@JimB 如果你的意思是在我的开发机上,我可以正常运行这个项目。只有在尝试构建 Docker 时才会出现问题。 - panchapol
那么你是如何将git-go-websiteskeleton添加到镜像中的?展示一下你所做的一切,这样我就不必猜了。 - JimB
谢谢@JimB。我的问题可能不够清楚。这是我所做的。我将项目克隆到我的src文件夹中,并运行main.go,它工作正常。我可以在我的机器上浏览到localhost:8080。然后我创建了一个Dockerfile,其中仅包含“FROM golang:onbuild EXPOSE 8080”。然后我运行命令“docker build -t git-go-websitesskeleton .”,然后就出现了错误。我非常新手Docker,但我认为我需要向Dockerfile添加更多的指令。我不确定,因为链接说我只能添加这个“FROM golang:onbuild EXPOSE 8080”。 - panchapol
你需要了解 onbuild dockerfile 在做什么。虽然你不一定需要它,但最好在更好地掌握情况之前停止使用它。 - JimB
显示剩余2条评论
2个回答

2
应用程序是在Docker容器内构建的,构建时需要有您的依赖项。 golang:onbuild提供了简单情况下紧凑的Dockerfiles,但它不会获取您的依赖项。
您可以编写自己的Dockerfile来构建应用程序所需的步骤。根据您的项目外观,您可以使用类似以下内容的内容:
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下公开它。

1
尝试:
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"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接