当前位置: 代码网 > it编程>前端脚本>Golang > 【云原生 37】Docker快速部署编程语言Golang_docker go运行环境

【云原生 37】Docker快速部署编程语言Golang_docker go运行环境

2024年08月06日 Golang 我要评论
【代码】【云原生 37】Docker快速部署编程语言Golang_docker go运行环境。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我v获取:vip1024c (备注嵌入式)

目录

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 的妻子。

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

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

需要这些体系化资料的朋友,可以加我v获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事it行业的老鸟或是对it行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

–rm outyet



**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
[外链图片转存中...(img-io7qxpgc-1715797932332)]
[外链图片转存中...(img-dwicvsna-1715797932332)]

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我v获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事it行业的老鸟或是对it行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com