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