go-zero源码阅读-服务部署
2024-01-12 09:41:22
生产环境搭建
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等内容。敬请期待!