返回

go-zero源码阅读-服务部署

后端

生产环境搭建

docker部署

go-zero提供了非常完善的docker部署支持,只需要在根目录下执行 make docker 就可以生成Dockerfile。在编译好服务后,可以使用 make run 构建并运行Docker镜像。

为了在生产环境中使用docker部署go-zero服务,我们首先需要创建一个Dockerfile。Dockerfile是一个文本文件,其中包含有关如何构建Docker镜像的指令。

以下是一个go-zero服务的Dockerfile示例:

FROM golang:1.16-alpine3.13

WORKDIR /app

COPY go.mod go.sum ./

RUN go mod download

COPY . ./

RUN make build

CMD ["go-zero", "run", "service.yaml"]

此Dockerfile指定了以下步骤:

  • 使用golang:1.16-alpine3.13作为基础镜像
  • 将当前目录复制到容器中
  • 运行 go mod download 以下载依赖项
  • 运行 make build 以构建服务
  • 将服务作为容器的默认命令运行

构建Docker镜像后,我们可以使用以下命令运行服务:

docker run -p 8080:8080 go-zero

这将启动一个新的容器,该容器将在端口8080上监听传入的连接。

k8s部署

go-zero也支持k8s部署,部署流程与docker类似,首先要编写yaml文件,yaml文件的内容包括服务名称、镜像名称、端口号等信息。

以下是一个go-zero服务的k8s yaml文件示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-zero
  labels:
    app: go-zero
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-zero
  template:
    metadata:
      labels:
        app: go-zero
    spec:
      containers:
      - name: go-zero
        image: registry.example.com/go-zero:latest
        ports:
        - containerPort: 8080

此yaml文件指定了以下内容:

  • 部署的名称为go-zero
  • 副本数为1
  • 服务将使用registry.example.com/go-zero:latest镜像
  • 服务将在端口8080上监听传入的连接

创建好yaml文件后,就可以使用 kubectl apply -f go-zero.yaml 命令来部署服务。

详细请看我的下一篇文章

  • git私有仓库 & 容器私有仓库 & CI、DI
  • 配置文件编写 & 生成dockerfile

配置文件编写

go-zero使用yaml文件来配置服务。yaml文件可以分为两部分:

  • 基础配置:包括服务的基本信息,如服务名称、端口号等
  • 中间件配置:包括各种中间件的配置信息,如限流、日志、链路追踪等

以下是一个go-zero服务的yaml文件示例:

name: go-zero
http:
  port: 8080
  middlewares:
    - limit:
        count: 100
        interval: 1s
    - log:
        format: json
    - trace:
        endpoint: localhost:6831

此yaml文件指定了以下内容:

  • 服务名称为go-zero
  • 服务将在端口8080上监听传入的连接
  • 使用了三个中间件:限流、日志和链路追踪

生成dockerfile

go-zero提供了非常完善的docker部署支持,只需要在根目录下执行 make docker 就可以生成Dockerfile。Dockerfile是一个文本文件,其中包含有关如何构建Docker镜像的指令。

以上便是有关在生产环境中部署go-zero服务的教程。在下一篇文章中,我们将学习如何在本地搭建生产环境,包括git私有仓库、容器私有仓库、CI、DI、配置文件编写、生成dockerfile等内容。敬请期待!