跳到主要内容

Go 规范

go 规范旨为你提供 go 服务如何部署到腾讯云托管的部署规范,该规范主要包含项目目录结构规范、开发环境规范、依赖管理规范等,以满足接入要求。

go 项目的示例可参考创建一个Gin应用

项目规范

项目目录必须包含以下文件:

├── Dockerfile
├── go.mod
├── main.go

Dockerfile: 是一个文本文件,包含了一系列指令,用于定义如何构建一个 Docker 镜像。通过编写 Dockerfile,可以自动化地创建包含应用程序及其运行环境的镜像,实现环境一致性和快速部署。

main.go: 服务的启动文件,当前名称必须与其保持一致。

go.mod: go 项目依赖管理文件。

go.mod 生成规范

go 语言默认依赖生成规范。

Dockerfile

Note: 注意需要根据实际情况修改 FROM 行 golang 版本

# 根据实际情况调整 golang 的版本
FROM golang:1.22.3-alpine as builder

# 指定构建过程中的工作目录
WORKDIR /app

# 将当前目录(dockerfile所在目录)下所有文件都拷贝到工作目录下(.dockerignore中文件除外)
COPY . /app/

# 执行代码编译命令。操作系统参数为linux,编译后的二进制产物命名为main,并存放在当前目录下。
RUN GOOS=linux go build -o main .

# 选用运行时所用基础镜像(GO语言选择原则:尽量体积小、包含基础linux内容的基础镜像)
FROM alpine:latest

# 容器默认时区为UTC,我们使用以下时区设置命令启用上海时区
# RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

# 使用 HTTPS 协议访问容器云调用证书安装
RUN apk add ca-certificates

# 指定运行时的工作目录
WORKDIR /app

# 将构建产物/app/main拷贝到运行时的工作目录中
COPY --from=builder /app/main /app/

# 执行启动命令
# 写多行独立的CMD命令是错误写法!只有最后一行CMD命令会被执行,之前的都会被忽略,导致业务报错。
# 请参考[Docker官方文档之CMD命令](https://docs.docker.com/engine/reference/builder/#cmd)
CMD ["/app/main"]

配置规范

配置一般放到项目目录中, 或者使用环境变量配置。

端口

服务部署时,在云托管上指定服务的启动端口即可。