定制app开发【云原生 | 37】Docker快速部署编程语言Golang

🍁博主简介
        🏅定制app开发云计算领域优质创作者
        🏅
        🏅
        🏅
✒️博主微信:15575411187
💊交流社区:定制app开发欢迎您的加入!

目录


1. 关于Golang

Go语言(也称Golang)是一个由Google定制app开发主导研发的编程语言,于2009年推出。定制app开发它的语法清晰明了,设计精良,定制app开发拥有一些先进的特性,定制app开发还有一个庞大的标准库。Go定制app开发的基本设计理念是:编译效率、定制app开发运行效率和开发效率要三者兼顾。使用Go开发,定制app开发既可以得到很多灵活的语法支持,定制app开发又可以拥有C/C++定制app开发的运行和编译效率。此外,Go定制app开发提供了轻量级的协程,定制app开发支持大规模并发的场景。

因为没有类和继承的概念,所以它和  或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说Go语言是一门混合型的语言。

此外,很多重要的开源项目都是使用Go语言开发的,其中包括 、Go-Ethereum、Thrraform 和 Kubernetes。

Go语言有一个吉祥物,在会议、文档页面和博文中,大多会包含下图所示的 Go Gopher,这是才华横溢的插画家 Renee French 设计的,她也是 Go 设计者之一 Rob Pike 的妻子。

2. 哪些大公司正在使用Go语言 

Go语言是谷歌在 2009 年发布的一款编程语言,自面世以来它以高效的开发效率和完美的运行速度迅速风靡全球,被誉为“21 世纪的C语言”。

现在越来越多的公司开始使用Go语言开发自己的服务,同时也诞生了很多使用Go语言开发的服务和应用,比如 、k8s 等,下面我们来看一下,有哪些大公司在使用Go语言。

1) Google 

作为创造了Go语言的 google 公司,当然会力挺Go语言了。Google 有很多基于 Go 开发的开源项目,比如 kubernets,,大家可以参考《》一节了解更多的Go语言开源项目。

2) Facebook 

Facebook 也在使用Go语言,为此他们还专门在 Github 上建立了一个开源组织 facebookgo。大家可以通过  访问查看 facebook 开源的项目,其中最具代表性的就是著名平滑重启工具 grace。

3) 腾讯 

腾讯在 15 年就已经做了 Docker 万台规模的实践。因为腾讯主要的开发语言是 C/ ,所以在使用Go语言方面会方便很多,也有很多优势,不过日积月累的 C/C++ 代码很难改造,也不敢动,所以主要在新业务上尝试使用 Go。

4) 百度 

百度主要在运维方面使用到了Go语言,比如百度运维的一个 BFE 项目,主要负责前端流量的接入,其次就是百度消息通讯系统的服务器端也使用到了Go语言。

5) 七牛云 

七牛云算是国内第一家选Go语言做服务端的公司。早在 2011 年,当Go语言的语法还没完全稳定下来的情况下,七牛云就已经选择将 Go 作为存储服务端的主体语言。

6) 京东 

京东云消息推送系统、云存储,以及京东商城的列表页等都是使用Go语言开发的。

7) 小米 

小米对Go语言的支持,在于运维监控系统的开源,它的官方网址是 。此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Go语言。

8) 360 

360 对Go语言的使用也不少,比如开源的日志搜索系统 Poseidon,大家可以通过  查看,还有 360 的推送团队也在使用Go语言。

除了上面提到的,还有很多公司开始尝试使用Go语言,比如美团、滴滴、新浪等。

Go语言的强项在于它适合用来开发网络方面的服务,比如消息推送、监控、容器等,所以在高并发的项目上大多数公司会优先选择 Golang 作为开发语言。

3. 搭建并运行Go容器 

1.使用官方镜像 

运行Go语言环境的最简方法是使用官方golang镜像。可以使用docker run指令直接启动Go语言的交互环境:
  1. $ docker run -it golang /bin/bash
  2. root@79afc2b64b06:/go# go versiongo version go1.7 linux/amd64
还可以将Go编译指令写入Dockerfile中,基于此Dockerfile构建自定义镜像。具体步骤如下。

第一步,新建项目文件夹,并在根目录新建Dockerfile:

  1. FROM golang:1.6-onbuild # 显示声明基础镜像版本,利于后期维护。
  2. # onbuild版本Dockerfile的具体内容如下:
  3. FROM golang:1.6
  4. RUN mkdir -p /go/src/app
  5. WORKDIR /go/src/app
  6. CMD ["go-wrapper", "run"] # 通过`go-wrapper`程序执行当前目录下的主函数
  7. ONBUILD COPY . /go/src/app # 拷贝当前项目代码至运行目录
  8. ONBUILD RUN go-wrapper download # 下载依赖,具体实现参考`go-wrapper`源码
  9. ONBUILD RUN go-wrapper install # 安装依赖,具体实现参考`go-wrapper`源码
  10. # `go-wrapper`源码地址:`https://github.com/docker-library/golang/blob/master/gowrapper`
  11. # Dockerfile源码地址: `https://github.com/docker-library/golang/blob/master/1.6/
  12. onbuild/Dockerfile`

第二步,新建自定义go程序go-sample.go:

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello,世界")
  5. }

第三步,使用docker build指令构建镜像:

$ docker build -t golang-image .

最后,使用docker run指令运行Go容器:

  1. $ docker run -it --rm --name golang-container golang-image
  2. + exec app
  3. Hello,世界
至此成功运行了Go语言的实例容器。如果需要在容器中编译Go代码,但是不需要在容器中运行它,那么可以执行如下命令:
  1. $ docker run --rm -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp golang go build -v
  2. _/usr/src/myapp
这会将Go项目文件夹作为Docker数据卷挂载起来并作为运行目录。然后,Docker会在工作目录中编译代码,执行go build命令并输出可执行文件至myapp。

2.Go项目容器化 

首先,下载Golang官方提供的outyet示例项目:

  1. $ mkdir outyet
  2. $ cd outyet
  3. # ֯使用go get下载 :
  4. $ go get github.com/golang/example/outyet
  5. # 或者直接使用wget下载 :
  6. $ wget https://github.com/golang/example/archive/master.zip
  7. $ unzip master.zip
  8. $ cd example-master/outyet
  9. $ ls
  10. Dockerfile containers.yaml main.go main_test.go

示例项目搭建成功后,可以按照以下模板去自定义项目的Dockerfile:

  1. # ֯使用golang基础镜像。基于Debian系统,安装最新版本的golang环境。工作空间(GOPATH)配置是"/go"
  2. FROM golang
  3. # 将本地的包文件拷贝至容器工作目录。
  4. ADD . /go/src/github.com/golang/example/my-go
  5. # 在容器中构建my-go。可以在这里手动或者自动(godep)管理依赖关系。
  6. RUN go install github.com/golang/example/my-go
  7. # 设定容器自动运行my-go。
  8. ENTRYPOINT /go/bin/my-go-app
  9. # 监听8080端口。
  10. EXPOSE 8080
如果使用onbuild版本的基础镜像,那么源文件拷贝、构建与配置等过程就会自动完成,无需在Dockerfile中逐一配置,如下所示:
  1. FROM golang:onbuild
  2. EXPOSE 8080
下面开始构建与运行此Golang项目。在outyet项目根目录执行docker build指令,使用本地目录下的Dockerfile:
$ docker build -t outyet .
构建过程中,Docker会从Docker Hub中获取golang基础镜像,拷贝本地包文件,构建项目并给镜像打上outyet标签。下面,使用docker run指令运行此镜像:
$ docker run -p 6060:8080 --name test --rm outyet
此时,实例项目的容器已经在运行状态。打开浏览器访问 http://localhost:6060/ 即可看到运行界面。

4. 搭建并运行Beego容器

Beego是一个使用Go的思维来帮助开发者构建并开发Go应用程序的开源框架。Beego使用Go开发,思路来自于Tornado,路由设计来源于Sinatra。使用方法如下。

第一步,下载安装:

go get github.com/astaxie/beego

第二步,创建文件hello.go:

  1. package main
  2. import "github.com/astaxie/beego"
  3. func main() {
  4. beego.Run()
  5. }

第三步,编译运行:

  1. go build -o hello hello.go
  2. ./hello
第四步,打开浏览器并访问 http://localhost:8080
至此,一个Beego项目成功构建了。

5. 搭建并运行Gogs:基于Go的Git服务 

Gogs的目标是打造一个最简单、轻松的方式搭建自助Git服务。使用Go语言开发使得Gogs能够通过独立的二进制分发,并且支持Go语言支持的所有平台,包括Linux、Mac OS X、Windows以及ARM平台。

可以使用docker run直接创建并运行镜像:

$ docker run --rm --name gogs gogs/gogs

如果需要停止此镜像,可以使用docker stop与docker rm指令:

$ docker stop gogs; docker rm gogs
如果需要将数据持久化,可以先新建数据文件夹,然后将其作为数据卷挂载至gogs容器中:
  1. $ mkdir -p /srv/lxc/gogs/data
  2. $ docker run -d --name gogs \ -p 8300:3000 -p 8322:22 -v /srv/lxc/gogs/data:
  3. /data gogs/gogs

  👑👑👑结束语👑👑👑

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发