Docker中go web项目部署

2017-11-06  本文已影响0人  初级赛亚人

Dockerfile

#部署golang环境
FROM golang:1.9
#下载gin包
RUN go get github.com/gin-gonic/gin
#开放端口
EXPOSE 7070

在Dockerfile目录打开一个终端,运行

sudo docker build -t my-gin .

之后待到镜像构建完毕之后通过

sudo docker images

可以查看到tag为latest的my-gin镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-gin              latest              689590bc3953        28 minutes ago      756MB

这是因为我们用docker build命令的时候没有指定my-gin的tag,所以默认是latest,你也可以这样使用:

sudo docker build -t my-gin:test .

这样会得构建一个tag为test的my-gin镜像

启动容器

现在已经拥有一个tag为my-gin的镜像,我们需要利用这个镜像启动一个容器

docker run -it --rm --name gin-instance -p 7070:7070 -v /home/youngblood/Go/src/ginDocker:/go/src/ginDocker -w /go/src/ginDocker my-gin

说明

启动成功之后便会进入容器的/go/src/ginDocker目录,如下

root@774e60551b73:/go/src/ginDocker# 

现在我们在物理机上编写ginDocker的一些功能,新建一个main.go,写入如下代码

package main

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

func main() {

    router := gin.Default()

    router.GET("/hello/:name", func(c *gin.Context) {
        name := c.Param("name")
        c.String(http.StatusOK, "hello %s", name)
    })
    router.Run(":7070")
}

在容器中执行如下命令

root@774e60551b73:/go/src/ginDocker# go build ginDocker
root@774e60551b73:/go/src/ginDocker# ./ginDocker

出现如下结果

root@774e60551b73:/go/src/ginDocker# go build ginDocker
root@774e60551b73:/go/src/ginDocker# ./ginDocker 
[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    /hello/:name              --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :7070

现在在物理机上的浏览器访问localhost:7070/hello/初级赛亚人

访问ginDocker截图

这样我们就完成了一个go web项目的部署

上一篇 下一篇

猜你喜欢

热点阅读