安装 Go
- 进入Go官网
- Go download 选择一个合适的版本,下载与安装。
如果你还不熟悉 Go 的语法,可以先花一点时间进行学习,因为 Go 的语法非常简洁,多练习很快就能上手
Go工具链
Go有自己的工具链,使用起来还是非常方便的,如果你是一个前端开发者,发现 Go 项目没有显示 node_modules 文件夹。下面是一些常用的命令:
Go命令
| 命令 | 功能 | 示例命令 |
|---|---|---|
| go run | 运行 Go 源文件 | go run main.go |
| go build | 编译 Go 包和依赖包 | go build |
| go test | 自动化测试工具 | go test |
| go fmt | 格式化 Go 代码 | go fmt ./… |
| go mod | 管理 Go 模块 | go mod tidy |
| go get | 下载和安装包和依赖 | go get <package_path> |
| go install | 编译并安装包 | go install <package_path> |
| gofmt | 格式化 Go 源代码 | gofmt -w . |
| golint | 静态检查 Go 代码 | golint ./… |
Go mod 子命令
Go从 v1.1 版本开始支持 mod 命令,并在 1.13 版本后成为默认包管理方式,使用 go mod 能方便的管理你的项目。
| 子命令 | 功能 | 示例命令 |
|---|---|---|
| init | 初始化新的模块 | go mod init example.com/mymodule |
| tidy | 整理依赖 | go mod tidy |
| download | 下载所有模块的依赖 | go mod download |
认识Gin
Gin 具有一下的特点:
- 速度快、体积小
- 中间件支持
- 无崩溃
- json 校验
- 分组路由
- 错误管理
- 内置渲染引擎
初始化一个 Gin 项目
1 | cd your_dir |
编写简单的业务代码
1 | package main |
导入如 gin 和 cron 两个三方库,然后再示例化 cron,并且添加一个任务,输出一个string字符串,然后使用 gin 给出一个路由提供给外部访问。一个带有定时任务的 go gin 小程序就完成了。
添加 dockerfile
dockerfile 分为两个版本一个没有分阶段构建和分阶构建的
没有分阶段
1 | FROM golang:1.22.2-alpine AS builder |
执行构建
1 | docker build -t cron-app--no-stage . |
我们看到没有分阶段的大小就包含了开发阶段文件,大小是 596+MB。体积还比较大的,只有两个小的主要依赖。
分阶段构建
1 | FROM golang:1.22.2-alpine AS builder |
阶段构建的 docker 镜像只有 18M, 远远小于没有分阶段的大小, 带有 linux 的镜像只有 18M, 非常小, 符合预期。
Docker 打包并上传
首先确保自己有一个镜像服务地址,上传镜像,这里以阿里云为例
使用 docker 登录阿里云 registry1
docker login --username=<your_user_name> <your_registry>
推送到云端1
2
3
4# 推送之前打一个 tag
docker tag [ImageId] <your_registry>/<your_name>/<image_name>:[镜像版本号]
docker push <your_registry>/<your_name>/<image_name>:[tag]
将镜像上传容器服务
上传成功之后,我们镜像会被 ali 云进行压缩,原来 15M 的现在 9.1M,压缩率是 39.33%
在服务器中进行部署
1 | # ssh 登录自己的服务器 |