Go 如果代码未托管在internet上,如何导入包

Go 如果代码未托管在internet上,如何导入包,go,import,dockerfile,Go,Import,Dockerfile,我有一个包结构 $GOPATH/src/io.sure/api/proto/vi/party.pb.go .../io.sure/party/party.go ../io.sure/Dockerfile party.go的导入是 import ( "context" "google.golang.org/grpc" "io.sure/api/proto/v1" "log" "net" ) 代码从命令行编译和运行。但

我有一个包结构

$GOPATH/src/io.sure/api/proto/vi/party.pb.go
        .../io.sure/party/party.go
        ../io.sure/Dockerfile
party.go的导入是

import (  
    "context"
    "google.golang.org/grpc"
    "io.sure/api/proto/v1"
    "log"
    "net"
)

代码从命令行编译和运行。但是,当我构建docker映像时,go get会尝试下载io.sure/api/proto/v1,即使我在docker映像中复制了api文件夹。我如何停止/跳过下载包,因为我在github或任何其他公共repo上都没有代码

销售是一件正确的事情,因为它是我自己的包装,可能不会出口或出口到外部世界

我尝试了go模块,但我面临问题,仍然希望使用GOPATH


对两种组合都进行了ried,但仍然存在相同的错误。代码确实会被复制到图像路径中

来自golang:1.12.1-阿尔卑斯建筑商 运行apk update&&apk add--无缓存git WORKDIR$GOPATH/src/io.sure 副本./party/。 复制./api/。 快跑,快跑,快跑 运行CGO_ENABLED=0转到安装

从头开始 WORKDIR/opt 复制--from=builder/go/bin/app。 入口点[“/opt/app”]

来自golang:1.12.1-阿尔卑斯建筑商 运行apk update&&apk add--无缓存git WORKDIR$GOPATH/src 运行mkdir-p$GOPATH/src/io.sure 副本./party/。 复制./api/。 快跑,快跑,快跑 运行CGO_ENABLED=0转到安装

从头开始 WORKDIR/opt 复制--from=builder/go/bin/app。 入口点[“/opt/app”]
获取https获取失败:获取:拨号tcp:lookup io.sure on xxx.xx.0.2:53:没有这样的主机包io.sure/api/proto/v1/party:无法识别的导入路径“io.sure/api/proto/v1/party”(https获取:获取:拨号tcp:lookup io.sure on xxx.31.0.2:53:没有这样的主机)

cli和Dockerimage之间的
$GOPATH
内容的不同之处在于软件包位置不正确

您需要
运行mkdir-p$GOPATH/src/io.sure
COPY./party$GOPATH/src/io.sure/
以在Dockerimage中实现与cli相同的布局


您可能需要调整路径,但我希望您能够理解找到解决方案的想法。修改的Dockerfile。所有依赖项都使用Godep进行管理

将workdir更改为/go/src/github.com/kubesure/party

添加了运行回显“[url\”git@github.com:\“]\n\tinsteadOf=“>>



是否确实要将主机gopath复制到映像gopath目录中?从internet获取io时,代码会被复制。
FROM golang:1.12.1-alpine AS builder   
RUN apk update && apk add --no-cache git   
WORKDIR /go/src/app  
COPY ./party/ .  
COPY ./api/ .  
RUN go get -d -v  
RUN CGO_ENABLED=0 go install

FROM scratch  
WORKDIR /opt  
COPY --from=builder /go/bin/app .  
ENTRYPOINT ["/opt/app"] 

RUN echo "[url \"git@github.com:\"]\n\tinsteadOf = https://github.com/" >> /root/.gitconfig
RUN apk update && apk add --no-cache git
WORKDIR /go/src/github.com/kubesure/party
COPY . .
RUN CGO_ENABLED=0 go install

FROM scratch
WORKDIR /opt
COPY --from=builder /go/bin/party .
EXPOSE 50051
CMD ["/opt/party"]