我有一个包结构
$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:没有这样的主机)
qazxsw poi的内容在cli和Docker Image之间有所不同,因为你的包不在正确的位置。
您需要使用$GOPATH
和RUN mkdir -p $GOPATH/src/io.sure
在Dockerimage中实现与cli相同的布局。
你可能需要调整路径,但我希望你能得到这个想法
找到了解决方案。修改了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/