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,界面如下:
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
运行效果图如下:
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即可访问。
参考文献
- Beego官方文档: https://beego.me/
- Dockerfile: https://docs.docker.com/engine/reference/builder/
- Docker Hub 之 Golang: /golang/”>https://hub.docker.com//golang/
- Docker之搭建Go Web服务~~
- docker搭建简单web服务
- Go Web服务开发入门(一) -- 搭建简单web服务器
- Go 开发WEB服务之hello world
- Docker搭建MySQL服务
- go web服务(1)
- go web服务(2)
- Go web 服务简单使用
- Docker系列(三):docker搭建服务
- 如何使用Docker部署Go Web应用程序
- Go搭建一个Web服务器
- Go搭建一个web服务器
- Docker搭建Java web环境
- 服务计算——GO环境搭建
- go 运维,检测 web 服务状态
- GO实现简单的web服务功能
- Go语言:REST Web服务调用
- Go语言之环境搭建
- Android常用8种设计模式(一)
- 编程中Myeclipse出现的错误
- 9.4 MATLAB try-catch结构
- Android两种典型的单例模式及SharedPrefenences单例模式的封装
- 总纲之六大设计原则
- Docker之搭建Go Web服务~~
- 计算字符串长度
- 粒子滤波学习笔记(三)
- Scrapyd的安装及使用(windows)
- 209 php扩展填坑1
- win10 uwp 绘图 Line 控件使用
- UML学习笔记
- FontManager 给某个页面或某些控件更改字体
- NSTimer使用机及其注意事项(一)