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

问题描述 投票:1回答:2

我有一个包结构

$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"
)

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

代码从命令行编译并运行。但是当我构建一个docker镜像时,即使我在docker镜像中复制了api文件夹,也试着下载io.sure / api / proto / v1。我怎么能停止/跳过下载包,因为我没有github上的代码或任何其他公共回购。

正在出售一件正确的东西,因为它是我自己的包装,可能不会出口或出口到外面的世界。

我试过去模块,但我遇到问题,仍然想与GOPATH合作。


两个组合但仍然是相同的错误。代码确实被复制到图像gopath中。

从golang:1.12.1-alpine AS builder RUN apk更新&& apk添加--no-cache git WORKDIR $ GOPATH / src / io.sure COPY ./party/。 COPY ./api/。 RUN go get -d -v RUN CGO_ENABLED = 0 go install

从头开始WORKDIR / opt COPY --from = builder / go / bin / app。 ENTRYPOINT [“/ opt / app”]

从golang:1.12.1-alpine AS builder RUN apk更新&& apk添加--no-cache git WORKDIR $ GOPATH / src RUN mkdir -p $ GOPATH / src / io.sure COPY ./party/。 COPY ./api/。 RUN go get -d -v RUN CGO_ENABLED = 0 go install

从头开始WORKDIR / opt COPY --from = builder / go / bin / app。 ENTRYPOINT [“/ opt / app”]获取https://io.sure/api/proto/v1/party?go-get=1 https获取失败:获取https://io.sure/api/proto/v1/party?go-get=1:拨打tcp:在xxx.xx.0.2上查找io.sure:53:没有这样的主机包io.sure / api / proto / v1 / party:无法识别的导入路径“io.sure / api / proto / v1 / party”(https fetch:获取https://io.sure/api/proto/v1/party?go-get=1:拨打tcp:在xxx.31.0.2上查找io.sure:53:没有这样的主机)

go import dockerfile
2个回答
2
投票

qazxsw poi的内容在cli和Docker Image之间有所不同,因为你的包不在正确的位置。

您需要使用$GOPATHRUN mkdir -p $GOPATH/src/io.sure在Dockerimage中实现与cli相同的布局。

你可能需要调整路径,但我希望你能得到这个想法


0
投票

找到了解决方案。修改了Dockerfile。所有依赖项都使用Godep进行管理

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

添加了RUN echo“[url \”[email protected]:\“] \ n \ tinsteadOf = COPY ./party $GOPATH/src/io.sure/”>>


https://github.com/
© www.soinside.com 2019 - 2024. All rights reserved.