docker golang 缺少依賴_使用docker部署golang服務
阿新 • • 發佈:2021-01-29
技術標籤:docker golang 缺少依賴
Go 的編譯結果基本上只依賴libc(傳言,第三方庫是否依賴那就另當別論了), 所以docker image 實際可以做的很小
- 使用apline 作為docker 的執行環境產生儘可能小的執行環境
- 國內使用有很多情況下是不能使用golang官網倉庫的,這邊需要使用go mod
- 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"]