Docker之搭建Go Web服务~~

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 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,界面如下:
Docker之搭建Go Web服务~~_第1张图片

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-wrapper", "run"]
ONBUILD COPY . /go/src/beego_server
ONBUILD RUN go-wrapper download
ONBUILD RUN go-wrapper install
RUN go get github.com/astaxie/beego
RUN go get -d -v
RUN go install -v

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

git clone url 

运行效果图如下:
Docker之搭建Go Web服务~~_第2张图片
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/

你可能感兴趣的:(docker,golang)