dongqiya9552 2018-09-10 22:29
浏览 826
已采纳

如何从go.mod中手动获取依赖项?

I'm using go 1.11 with module support. I understand that the go tool now installs dependencies automatically on build/install. I also understand the reasoning.

I'm using docker to build my binaries. In many other ecosystems its common to copy over your dependency manifest (package.json, requirements.txt, etc) and install dependencies as a separate stage from build. This takes advantage of docker's layer caching, and makes rebuilds much faster since generally code changes vastly outnumber dependency changes.

I was wondering if vgo has any way to do this?

  • 写回答

3条回答 默认 最新

  • donglu6303 2019-06-20 20:15
    关注

    It was an issue #26610, which is fixed now.

    So now you can just use:

    go mod download
    

    For this to work you need just the go.mod / go.sum files.

    For example, here's how to have a cached multistage Docker build:

    FROM golang:1.12-alpine as builder
    RUN apk --no-cache add ca-certificates git
    WORKDIR /build/myapp
    
    # Fetch dependencies
    COPY go.mod ./
    RUN go mod download
    
    # Build
    COPY . ./
    RUN CGO_ENABLED=0 go build
    
    # Create final image
    FROM alpine
    WORKDIR /root
    COPY --from=builder /build/myapp/myapp .
    EXPOSE 8080
    CMD ["./myapp"]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?