1. 程式人生 > 其它 >docker golang 缺少依賴_使用docker部署golang服務

docker golang 缺少依賴_使用docker部署golang服務

技術標籤:docker golang 缺少依賴

fd7056f2e33f6f89178286235695a038.png

Go 的編譯結果基本上只依賴libc(傳言,第三方庫是否依賴那就另當別論了), 所以docker image 實際可以做的很小

  1. 使用apline 作為docker 的執行環境產生儘可能小的執行環境
  2. 國內使用有很多情況下是不能使用golang官網倉庫的,這邊需要使用go mod
  3. golang 編譯需要一個環境,但是執行的時候並不需要編譯的時候的那些go get的東西,所以需要另外建立一個docker image, 這個docker 使用上一個docker的編譯結果

解決方法的話就是使用docker 的multi stage build, 具體的docker file 如下

# buildFROM golang:1.12-alpine AS builderWORKDIR /go/src/appCOPY . .# set go mod proxyENV GO111MODULE=onENV GOPROXY=https://goproxy.ioRUN go build -ldflags "-w -s"# runtimeFROM alpine:latestRUN apk --no-cache add ca-certificatesWORKDIR /root/# using build resultCOPY --from=builder /go/src/app/ .CMD ["./appname"]