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) 小米
8) 360
|
|---|
| 除了上面提到的,还有很多公司开始尝试使用Go语言,比如美团、滴滴、新浪等。 Go语言的强项在于它适合用来开发网络并发方面的服务,比如消息推送、监控、容器等,所以在高并发的项目上大多数公司会优先选择 Golang 作为开发语言。 |
3. 搭建并运行Go容器
1.使用官方镜像
|
|---|
|
| 运行Go语言环境的最简方法是使用官方golang镜像。可以使用docker run指令直接启动Go语言的交互环境: |
|
$ docker run -it golang /bin/bash
root@79afc2b64b06:/go
|
|---|
|
| 还可以将Go编译指令写入Dockerfile中,基于此Dockerfile构建自定义镜像。具体步骤如下。 |
|
|
|---|
| 第一步,新建项目文件夹,并在根目录新建Dockerfile: |
FROM golang:1.6-onbuild
FROM golang:1.6
RUN mkdir -p /go/src/app
WORKDIR /go/src/app
CMD ["go-wrapper", "run"]
ONBUILD COPY . /go/src/app
ONBUILD RUN go-wrapper download
ONBUILD RUN go-wrapper install
onbuild/Dockerfile`
|
|---|
| 第二步,新建自定义go程序go-sample.go: |
package main
import "fmt"
func main() {
fmt.Println("Hello,世界")
}
|
|---|
| 第三步,使用docker build指令构建镜像: |
$ docker build -t golang-image .
$ 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: |
FROM golang
ADD . /go/src/github.com/golang/example/my-go
RUN go install github.com/golang/example/my-go
ENTRYPOINT /go/bin/my-go-app
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
4. 搭建并运行Beego容器
|
|---|
|
| Beego是一个使用Go的思维来帮助开发者构建并开发Go应用程序的开源框架。Beego使用Go开发,思路来自于Tornado,路由设计来源于Sinatra。使用方法如下。 |
|

go get github.com/astaxie/beego
package main
import "github.com/astaxie/beego"
func main() {
beego.Run()
}
go build -o hello hello.go
./hello
| |
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。

如果你需要这些资料,可以戳这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!