美文网首页
Docker中go web项目部署

Docker中go web项目部署

作者: 初级赛亚人 | 来源:发表于2017-11-06 16:16 被阅读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

    说明

    • docker run 用于从一个image上启动一个容器
    • -it 标签以交互的方式启动容器
    • --rm 标签在容器关闭后会会删除该容器,查看容器命令:sudo docker ps -a
    • -p 7070:7070标签允许荣过主机的7070端口访问docker容器中的7070端口
    • -v /home/youngblood/Go/src/ginDocker:/go/src/ginDocker表示将docker容器中的/go/src/ginDocker目录挂在到物理机的/home/youngblood/Go/src/ginDocker目录中,/home/youngblood/Go是我物理机的GOPATH,你也可以选择不用这个目录
    • -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项目的部署

    相关文章

      网友评论

          本文标题:Docker中go web项目部署

          本文链接:https://www.haomeiwen.com/subject/vngfmxtx.html