将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!"}

  

 

posted on   youhui  阅读(1096)  评论(0编辑  收藏  举报

编辑推荐:
· 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代理 了,记录一下
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示