使用本地程序包构建docker时,错误'导入路径不以hostname'开头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用本地程序包构建docker时,错误'导入路径不以hostname'开头相关的知识,希望对你有一定的参考价值。

我正在尝试使用本地程序包构建一个docker但是得到错误'import path不以hostname'开头。如果我的理解是正确的,我的Dockerfile应该是正确的

FROM golang:onbuild
EXPOSE 8080

基于这篇文章Deploying Go servers with Docker

我使用此代码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"

谢谢你的帮助。

答案

应用程序构建在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下公开它。

另一答案

试试:

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"]

以上是关于使用本地程序包构建docker时,错误'导入路径不以hostname'开头的主要内容,如果未能解决你的问题,请参考以下文章

Docker:尝试使用本地 CircleCI 构建连接到 Docker 守护程序时权限被拒绝

使用 docker 构建时出现 pkg_config_path 错误

在本地运行 GitLab 和 GitLab-Runner docker 实例时,管道中的构建步骤因连接被拒绝错误而失败

使用新版Golang1.18多段构建制作docker镜像的踩坑经历

如何在 docker 构建期间指定和使用证书文件

Docker容器的交叉原点错误