亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Docker 中安裝私有依賴項

如何在 Docker 中安裝私有依賴項

Go
白衣非少年 2023-05-08 16:37:43
我正在嘗試在 docker 容器中獲取一個 Go 應用程序。這是我的第一個更大的 Go 和 Docker 項目。只要我在本地機器上運行 go 程序就可以正常運行,現在我想在 docker 容器內的 EC2 上運行它。我的 docker 文件如下所示:FROM golang:latest RUN mkdir /tirADD . /tir WORKDIR /tirRUN go build -o main . CMD ["/app/main"]但是對于每個私有依賴項,我都會收到以下錯誤:main.go:17:2: cannot find package "github.com/ser/model" in any of:    /usr/local/go/src/github.com/ser/model (from $GOROOT)    /go/src/github.com/ser/model (from $GOPATH)當我RUN go get ./..在之前插入時RUN go build -o main .,每個包都會出現以下錯誤:fatal: could not read Username for 'https://github.com': terminal prompts disabled包 github.com/ser/endpoints:退出狀態 128我嘗試了幾種解決方案,但都沒有用。我總是以上述錯誤告終。由于這是我的第一個 docker + golang 項目,是否有任何準備好將 dockerfiles 用于具有公共和私有依賴項的 golang 應用程序?更新:我卸載了 go,并一個一個地復制了每個文件,并在每個文件之后使用了 dep -ensure?,F在可以用了,謝謝 :D
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您的依賴項可能存儲在中GOPATH/src/<import-path>,您可以使用go get工具管理它們。

考慮供應商?和工具,如dep或模塊

因此,您的依賴項將包含在源代碼管理中,并且項目將更加可移植。

您還可以改進創建圖像的方式Docker

當前的實現使用一個包含整個GO工具鏈的容器。代碼被復制到該容器內部,容器編譯并托管代碼。只有稍后才需要生產。

更好的選擇是使用 2 個容器:

  1. Go 編譯工具

  2. 僅托管二進制文件的輕量級容器

# Debian image with the latest version of Go installed

# and a workspace (GOPATH) configured at /go.

FROM golang:1.11 as builder

WORKDIR /go/src/github.com/space/project/


# Copy the local package files to the container's workspace.

ADD . /go/src/github.com/space/project/


# Build the service inside the container.

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .


FROM centurylink/ca-certs

EXPOSE 8080


# Copy app

COPY --from=builder /go/src/github.com/space/project/app? ?/

ENTRYPOINT ["/app"]


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號