Docker之搭建Go Web服务~~

来源:互联网 发布:知乎日报 正装 编辑:程序博客网 时间:2024/05/21 13:54

Docker之部署go web环境

标签(空格分隔): docker golang web


需求

最近在学习Go语言开发。既然学习了它,必然要接触Web开发。Go Web开发非常方便,在不使用任何框架的情况下即可快速搭建一个Web Server。既然有现成的框架,那就直接使用吧。
目前市面上比较流行的Go MVC框架有Revel、BeeGo等。最近正好学习了这两个框架,Revel开发一个框架非常迅速,不够需要借助一个revel命令工具。revel命令工具安装用到了golang.org域名下的package,这个对于国内开发而言,简直是噩梦(~~!!!)。
最终选用了BeeGo,相对Revel而言自然是安装简单。

Without Docker

很显然,我们不能一上来就在docker上部署BeeGo环境。
首先,我们需要在本地验证一番,开发环境为Windows 10.
1 安装GO,不用多说;需要注意的是安装完之后需要配置GOROOT、GOPATH环境变量。
2 安装beego。

go get github.com/astaxie/beego

3 编写代码,这个可以使用beego推荐的命令工具,不过多介绍,因为我也没有试过。我是采用手动创建的方式。文件结构如下:

beego_server|----src|----|----controller|----|----|----HomeController.go // 具体controller处理|----|----router|----|----|----Home.go // router定义文件|----conf|----|----app.conf // 程序配置,beego框架自动加载|----main.go // 程序入口

程序入口main.go

package mainimport (    _  "beego_server/src/router"    "github.com/astaxie/beego")func main(){    beego.Run()}

程序配置conf/app.conf

appname = beego_serverhttpport = 9092runmode = "dev"viewpath = "view"

Controller(HomeController.go)

package controllerimport (    "github.com/astaxie/beego")type HomeController struct {    beego.Controller}func (this *HomeController) Get() {    this.Ctx.WriteString("Hello")}

Router(Home.go)

package routerimport (    "beego_server/src/controller"    "github.com/astaxie/beego")func init(){    beego.Router("/",  &controller.HomeController{})}

4 运行
待一切就绪之后,直接通过go run main.go即可运行一个server。
5 验证
通过浏览器打开http://localhost:9092,界面如下:
image_1b2pqkpbclm71264fks05118l9.png-51.7kB

With Docker

既然在本地运行没有问题,那就开启docker之旅吧。
1 Dockerfile,在上述工程中新建Dockerfile文件,文件内容如下:

FROM golangRUN mkdir -p /go/src/beego_serverWORKDIR /go/src/beego_serverCOPY . /go/src/beego_serverCMD ["go-wrapper", "run"]ONBUILD COPY . /go/src/beego_serverONBUILD RUN go-wrapper downloadONBUILD RUN go-wrapper installRUN go get github.com/astaxie/beegoRUN go get -d -vRUN go install -v

2 代码,将代码部署至github,然后通过git下载至本地,

git clone url 

运行效果图如下:
image_1b2s8se55e5p107e12evmq916tpm.png-39.3kB
3 编译docker,切换至工程目录

docker build -t my-golang-app .

4 运行docker

docker run --name shushanfx-beego -p 9093:9092 -d my-golang-app

这样就暴露一个9093的端口,并且将9093端口绑定至容器实例的9092端口。这样通过http://host_id:9093即可访问。

参考文献

  1. Beego官方文档: https://beego.me/
  2. Dockerfile: https://docs.docker.com/engine/reference/builder/
  3. Docker Hub 之 Golang: /golang/”>https://hub.docker.com//golang/
0 0
原创粉丝点击