导入路径不是以主机名开头

时间:2019-11-18 13:45:02

标签: docker go dockerfile

我有一个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 git@github.myusername/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在第二部分中运行get / go / src / SCMicroServer 。我在提到的步骤中收到此错误:

  

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

“ SCMicroServer / controllers / package1”是我的应用程序文件夹(或其子文件夹)中的本地软件包之一,而我的本地文件夹中还有更多软件包。我在Dockerfile中设置了GOPATH env变量,所以我不确定自己缺少什么。

1 个答案:

答案 0 :(得分:0)

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

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

删除第二个后,我停止接收该错误。