将Go程序部署到docker
https://eddycjy.com/posts/go/gin/2018-03-24-golang-docker/
https://studygolang.com/articles/11547
https://segmentfault.com/a/1190000013960558
go.mod
1 2 3 4 5 6 7 8 9 | module go-gin-example go 1.14 require ( github.com /gin-gonic/gin v1.6.2 gopkg. in /go-playground/assert .v1 v1.2.1 // indirect gopkg. in /go-playground/validator .v9 v9.29.1 // indirect ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET( "/index" , func (c *gin.Context) { c.JSON(200, gin.H{ "message" : "Hello Docker Form Golang!" , }) }) r.Run() // listen and serve on 0.0.0.0:8080 } |
Dockerfile
FROM golang:latest WORKDIR $GOPATH /src/go-gin-example COPY . $GOPATH /src/go-gin-example RUN GOPROXY= "https://goproxy.io" GO111MODULE=on go build . EXPOSE 8080 ENTRYPOINT [ "./go-gin-example" ] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | [root@VM_0_2_centos go-gin-example] # docker build -t go-gin-example . Sending build context to Docker daemon 4.096 kB Step 1 /6 : FROM golang:latest ---> 315fc470b445 Step 2 /6 : WORKDIR $GOPATH /src/go-gin-example ---> 4be5d67ad27d Removing intermediate container 815220e6809a Step 3 /6 : COPY . $GOPATH /src/go-gin-example ---> 6a99647121bf Removing intermediate container ceac88366ea1 Step 4 /6 : RUN GOPROXY= "https://goproxy.io" GO111MODULE=on go build . ---> Running in 879ca3d0654d go: downloading github.com /gin-gonic/gin v1.6.2 go: downloading github.com /gin-contrib/sse v0.1.0 go: downloading github.com /go-playground/validator/v10 v10.2.0 go: downloading github.com /ugorji/go v1.1.7 go: downloading gopkg. in /yaml .v2 v2.2.8 go: downloading github.com /golang/protobuf v1.3.3 go: downloading github.com /mattn/go-isatty v0.0.12 go: downloading github.com /ugorji/go/codec v1.1.7 go: downloading github.com /go-playground/universal-translator v0.17.0 go: downloading github.com /leodido/go-urn v1.2.0 go: downloading golang.org /x/sys v0.0.0-20200116001909-b77594299b42 go: downloading github.com /go-playground/locales v0.13.0 ---> 4bfdd98f7261 Removing intermediate container 879ca3d0654d Step 5 /6 : EXPOSE 8080 ---> Running in ba412a5818f6 ---> 9c36caca6c7d Removing intermediate container ba412a5818f6 Step 6 /6 : ENTRYPOINT . /go-gin-example ---> Running in e369c0b44c45 ---> 659eda3e71d9 Removing intermediate container e369c0b44c45 Successfully built 659eda3e71d9 [root@VM_0_2_centos go-gin-example] # docker run -d -p 8080:8080 go-gin-example [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env : export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /index --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [root@VM_0_2_centos go-gin-example] # curl http://localhost:8080/index { "message" : "Hello Docker from Golang!" } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下