您好,登錄后才能下訂單哦!
本篇內容主要講解“Go容器化的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go容器化的方法是什么”吧!
演示工程
package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "code": 0, "message": "success", "data": "hello world", }) }) r.GET("/hello", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "code": 0, "message": "success", "data": "world", }) }) r.GET("/ping", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "code": 0, "message": "success", "data": "pong", }) }) r.Run(":8080")}
FROM registry.cn-beijing.aliyuncs.com/baxiang/golang:1.14 as buildENV GO111MODULE=offENV GOBUILDPATH=github.com/baxiang/hello-worldRUN mkdir -p /go/src/${GOBUILDPATH}COPY ./ /go/src/${GOBUILDPATH}RUN cd /go/src/${GOBUILDPATH} && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install -vFROM alpine as debugWORKDIR /hello-wordldCOPY --from=build /go/bin/hello-world ./hello-worldEXPOSE 8080CMD ["./hello-world"]
go項目基于alpine 構建docker鏡像,啟動容器的時候一直報錯 standard_init_linux.go:211: exec user process caused "no such file or directory"
動態鏈接的在微型鏡像alpine上不支持。默認go使用靜態鏈接,在docker的golang環境中默認是使用動態編譯。
如果想使用docker編譯+alpine部署,可以通過禁用cgo set CGO_ENABLED=0來解決。
如果要使用cgo可以通過go build --ldflags "-extldflags -static" 來讓gcc使用靜態編譯。
到此,相信大家對“Go容器化的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。