当前位置: 首页 > 知识库问答 >
问题:

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

微生慈
2023-03-14

我有一个包结构

$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映像时,去尝试下载io.sure/api/proto/v1即使我在docker映像中复制了api文件夹。我怎么能停止/跳过下载包,因为我没有github或任何其他公共回购上的代码。

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

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

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

来自戈朗:1.12。1-alpine作为构建器运行apk更新

从零开始WORKDIR /optCOPY--from=Builder /go/bin/app。入口点["/选择/应用"]

来自戈朗:1.12。1-alpine作为构建器运行apk更新

从头开始WORKDIR/opt COPY--FROM=builder/go/bin/app。入口点[“/opt/app”]获取https://io.sure/api/proto/v1/party?go-get=1 https获取失败:gethttps://io.sure/api/proto/v1/party?go-get=1:拨号tcp:查找io。当然可以。xx。0.2:53:没有这样的主机包io。sure/api/proto/v1/party:无法识别的导入路径“io.sure/api/proto/v1/party”(https获取:Get)https://io.sure/api/proto/v1/party?go-get=1:拨号tcp:查找io。当然可以。31.0.2:53:没有这样的主持人)

共有2个答案

欧浩淼
2023-03-14

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

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

增加了RUN的回声"[url\"git@github.com:\"]\n\tinsteOf=https://github.com/"

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"]
宿嘉
2023-03-14

您的$GOPATH的内容在cli和DockerImage之间的不同之处在于您的包不在正确的位置。

您需要运行mkdir-p$GOPATH/src/io。当然可以复制/参与方$GOPATH/src/io。确保/在Dockerimage中实现与cli相同的布局。

你可能需要调整路径,但我希望你能理解

 类似资料:
  • 我的项目代码托管在git和gerrit上。我想把gerrit和jenkins结合起来。当我在源代码管理部分(Jenkins)中输入SSH路径或HTTP路径时,我得到下面的错误 错误: 在主工作区/var/lib/jenkins/workspace/demo[WS-CLEANUP]删除项目工作区时,计时器在主工作区上构建启动。。。[WS-CLEANUP]已完成克隆远程Git存储库克隆存储库http:

  • 本文向大家介绍两分钟学会如何在github托管代码,包括了两分钟学会如何在github托管代码的使用技巧和注意事项,需要的朋友参考一下 本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正; 关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用。 本篇文章介绍的是如何将工程代码托管到上面;如果你还没注册GitHub账号请到https://github

  • 当你想要分享你代码给其他人,或者是你需要在另外一台电脑上工作时,托管代码就会是一个非常重要的话题。基本上代码托管有两种不同的形式: do-it-yourself(建立一个自己的)或者 leave-me-in-peace(使用第三方提供的平台,不麻烦自己)。 (A) Do-It-Yourself 把你的 Git 仓库托管在你自己的服务器上会有很多的优点: 可以节省你花在代码托管服务上的费用。 你的代

  • 项目管理 & 代码托管 Github [free to $] Codebase [$] Bitbucket [free to $] Unfuddle [$] Assembla [free to $]

  • 问题内容: 我已经在Swift中编写了一个库,但无法将其导入到用Objective-C编写的当前项目中。 有什么方法可以导入吗? 问题答案: 您需要导入。请注意,这是目标名称-其他答案会导致使用类名称的错误。 这个单个文件是一个自动生成的标头,它为项目中所有用注释或继承的Swift类定义了Objective-C接口。 注意事项: 如果您的目标名称包含空格,请用下划线替换(例如,成为) 如果目标是框

  • 第一章 GitLab简介 GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集