美文网首页
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