【云原生 | 37】Docker快速部署编程语言Golang

这篇具有很好参考价值的文章主要介绍了【云原生 | 37】Docker快速部署编程语言Golang。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍁博主简介
        🏅云计算领域优质创作者
        🏅新星计划第三季python赛道第一名
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主
✒️博主微信:15575411187
💊交流社区:小鹏linux(个人社区)欢迎您的加入!

目录

1. 关于Golang

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

3. 搭建并运行Go容器 

4. 搭建并运行Beego容器

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

  👑👑👑结束语👑👑👑


1. 关于Golang

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

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

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

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

docker go运行环境,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,golang

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

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

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

1) Google 

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

2) Facebook 

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

3) 腾讯 

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

4) 百度 

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

5) 七牛云 

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

6) 京东 

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

7) 小米 

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

8) 360 

360 对Go语言的使用也不少,比如开源的日志搜索系统 Poseidon,大家可以通过 GitHub - Qihoo360/poseidon: A search engine which can hold 100 trillion lines of log data. 查看,还有 360 的推送团队也在使用Go语言。

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

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

3. 搭建并运行Go容器 

1.使用官方镜像 

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

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

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

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

package main
import "fmt"
func main() {
    fmt.Println("Hello,世界")
}

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

$ docker build -t golang-image .

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

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

2.Go项目容器化 

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

$ mkdir outyet
$ cd outyet
# ֯使用go get下载 :
$ go get github.com/golang/example/outyet
# 或者直接使用wget下载 :
$ wget https://github.com/golang/example/archive/master.zip
$ unzip master.zip
$ cd example-master/outyet
$ ls
Dockerfile containers.yaml main.go main_test.go

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

# ֯使用golang基础镜像。基于Debian系统,安装最新版本的golang环境。工作空间(GOPATH)配置是"/go"
FROM golang
# 将本地的包文件拷贝至容器工作目录。
ADD . /go/src/github.com/golang/example/my-go
# 在容器中构建my-go。可以在这里手动或者自动(godep)管理依赖关系。
RUN go install github.com/golang/example/my-go
# 设定容器自动运行my-go。
ENTRYPOINT /go/bin/my-go-app
# 监听8080端口。
EXPOSE 8080
如果使用onbuild版本的基础镜像,那么源文件拷贝、构建与配置等过程就会自动完成,无需在Dockerfile中逐一配置,如下所示:
FROM golang:onbuild
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。使用方法如下。

docker go运行环境,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,golang

第一步,下载安装:

go get github.com/astaxie/beego

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

package main
import "github.com/astaxie/beego"
func main() {
    beego.Run()
}

第三步,编译运行:

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

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

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

docker go运行环境,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,golang

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

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

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

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

  👑👑👑结束语👑👑👑

docker go运行环境,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,golang文章来源地址https://www.toymoban.com/news/detail-790562.html

到了这里,关于【云原生 | 37】Docker快速部署编程语言Golang的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生 | 36】Docker快速部署主流脚本语言JavaScript

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅新星计划第三季python赛道第一名         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 ✒️ 博主微信 :15575411187 💊 交流社区 :小鹏linux(个人社区)欢迎您的加入! 目录

    2024年02月02日
    浏览(48)
  • HOJ 系统常用功能介绍 OJ部署快速入门 c++ python 编程语言在线自动评测判题 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP 蓝桥等考题库

    技术支持微  makytony   终身更新维护 功能类似洛谷和信息奥赛一本通,支持CSP复赛中的freopen文件输入输出方式提交,模拟真实考试环境,防止出现 本地  AC 比赛  WA  PA TLE  爆零 的惨剧。 组织比赛作业,创建题目、查看用户提交代码、下载评测数据等都没限制。 约  328

    2024年02月07日
    浏览(53)
  • 云原生时代崛起的编程语言Go常用标准库实战

    @ 目录 基础标准库 简述 字符串-string 底层结构 函数 长度 格式化输出 模版-template text/template html/template 正则表达式-regexp 编码-encoding Base64 JSON XML 时间-time 网络-net URL HTTP客户端和服务端 加密 IO操作 读写文件 环境变量 命令行 数据库 排序-sort 测试和基准测试 Go语言的标准库覆

    2024年02月02日
    浏览(41)
  • 快速认识,前端必学编程语言:JavaScript

    JavaScript是构建Web应用必学的一门编程语言,也是最受开发者欢迎的热门语言之一。所以,如果您还不知道JavaScript的用处、特点的话,赶紧补充一下这块基础知识。 JavaScript 是一种高级、单线程、垃圾收集、解释或即时编译、基于原型、多范式、动态语言,具有非阻塞事件循

    2024年02月05日
    浏览(52)
  • Shell编程——弱数据类型的脚本语言快速入门指南

    目录 Linux Shell 数据类型 变量类型 运算符 算术运算符 赋值运算符 拼接运算符 比较运算符 关系运算符 控制结构 顺序结构 条件分支结构 if 条件语句 case 分支语句  循环结构 for 循环 while 循环 until 循环 break 语句 continue语句 函数 函数定义  函数名 函数体 返回值 参数 函数的

    2024年02月12日
    浏览(77)
  • 玄子Share-自然语言编程(NLP)_快速了解知识向 ChatGPT 提问的最佳模板

    以下内容均为 ChatGPT 回答 玄子: 我向你提问时,问题描述精确的重要性 ChatGPT 3.5 问题描述的精确性非常重要,因为它可以让回答者更好地理解您的问题,并且更容易提供准确和有用的解决方案。如果问题描述不够清晰或不够详细,回答者可能会误解您的问题或者理解不到位

    2024年02月08日
    浏览(53)
  • GO编程语言:简洁、高效、强大的开源编程语言

    在现代软件开发领域,随着应用复杂度的不断提升,开发人员对编程语言的需求也日益增长。GO编程语言,作为一种简洁、高效且具备强大并发能力的新型开源编程语言,逐渐成为了许多开发者的首选。本文将详细介绍GO语言在哪些项目开发中表现出色,以及为什么许多开发者

    2024年02月02日
    浏览(106)
  • 【编程语言 · C语言 · 函数指针】

    由于指针可以指向任何存储器位置中的地址,因此它们也可以指向可执行代码的开头。 函数指针或函数指针指向内存中函数的可执行代码。函数指针可以存储在数组中,也可以作为参数传递给其他函数。 函数指针声明使用 * 就像使用任何指针一样: (*func_name)  周围的括号很

    2024年02月10日
    浏览(57)
  • 介绍一些编程语言— Perl 语言

    Perl 是一种动态解释型的脚本语言。 最初的设计者为拉里・沃尔,它于 1987 1987 1987 年 12 12 12 月 18 18 18 日发表。Perl 借取了 C、sed、awk、shell scripting 以及很多其他编程语言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。 1987 1987

    2024年02月12日
    浏览(56)
  • 介绍一些编程语言—C语言

    C 语言是一门 面向过程 的计算机编程语言,与 C++、C#、Java 等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 C语言描述问题比汇编语言迅速、工作量小

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包