登录
首页 >  Golang >  Go问答

路径不能从主机名开始

来源:stackoverflow

时间:2024-03-24 16:48:39 381浏览 收藏

Dockerfile 中使用 `go get` 命令时遇到错误,提示“导入路径不以主机名开头”。该错误源于 Dockerfile 中对本地包的引用方式。本地包的导入路径不应以主机名开头,而是应以相对路径或绝对路径开头。调整本地包的导入路径,删除多余的引用后,`go get` 命令能够成功执行。

问题内容

我有一个 go 应用。它的一些依赖项位于私有 github 存储库中,另一部分依赖项是我的应用程序文件夹中的本地包。该应用程序在我的计算机上编译和运行没有问题(当我简单地在没有docker的情况下编译它时)。我正在使用下面的 dockerfile。

FROM ubuntu as intermediate

# install git
RUN apt-get update
RUN apt-get install -y git


RUN mkdir /root/.ssh/
COPY github_rsa.ppk /root/.ssh/github_rsa.ppk
RUN chmod 700 /root/.ssh/github_rsa.ppk

RUN eval $(ssh-agent) && \
    ssh-add /root/.ssh/github_rsa.ppk && \
    ssh-keyscan -H github.com >> /etc/ssh/ssh_known_hosts && \
    git clone [email protected]/shared.git


FROM golang:latest
ENV GOPATH=/go

RUN echo $GOPATH

ADD . /go/src/SCMicroServer
WORKDIR /go/src/SCMicroServer
COPY --from=intermediate /shared /go/src/github.com/myusername/shared
RUN go get /go/src/SCMicroServer
RUN go install SCMicroServer
ENTRYPOINT /go/src/SCMicroServer
EXPOSE 8080

与 git 相关的第一个构建部分工作正常,直到第二部分出现以下行:run go get /go/src/scmicroserver。我在上述步骤中收到此错误:

程序包 scmicroserver/controllers/package1:无法识别的导入路径“scmicroserver/controllers/package1”(导入路径不以主机名开头) 命令“/bin/sh -c go get /go/src/scmicroserver”返回非零代码:1

“scmicroserver/controllers/package1”是我的应用程序文件夹(或其子文件夹)中的本地包之一,我的本地文件夹中还有更多。我在 dockerfile 中设置 gopath 环境变量,所以我不确定我缺少什么。


解决方案


我找到了答案,这并不是真正的 dockerfile 问题,我在主文件中以两种不同的方式引用了我的包 2 次:

package1 "SCMicroServer/controllers/package1"
"SCMicroServer/controllers/package1"

删除第二个后,我不再收到错误。

终于介绍完啦!小伙伴们,这篇关于《路径不能从主机名开始》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>