Docker之搭建Go 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 main

import (
    _  "beego_server/src/router"
    "github.com/astaxie/beego"
)

func main(){
    beego.Run()
}


程序配置conf/app.conf

appname = beego_server
httpport = 9092
runmode = "dev"
viewpath = "view"


Controller(HomeController.go)

package controller

import (
    "github.com/astaxie/beego"
)

type HomeController struct {
    beego.Controller
}

func (this *HomeController) Get() {
    this.Ctx.WriteString("Hello")
}


Router(Home.go)

package router

import (
    "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 golang
RUN mkdir -p /go/src/beego_server
WORKDIR /go/src/beego_server
COPY . /go/src/beego_server
CMD ["go", "run"]
ONBUILD COPY . /go/src/beego_server
ONBUILD RUN go download
ONBUILD RUN go install
RUN go get github.com/astaxie/beego
RUN go get -d -v
RUN go install -v


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

git clone url 

3 编译docker,切换至工程目录

sudo docker build -t my_beego_server .


4 运行docker

sudo docker run --name my_beego_server -p 9093:9092 -d my_beego_server

如果运行出错,可以参考下面指令

sudo docker run -it -p 9093:9092 -d my_beego_server go run main.go


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

参考文献
Beego官方文档: https://beego.me/
Dockerfile: https://docs.docker.com/engine/reference/builder/
Docker Hub 之 Golang: /golang/”>https://hub.docker.com//golang/

你可能感兴趣的:(Linux)