Go语言常用命令
环境准备
#修改go配置
export GOPROXY="https://goproxy.cn"
Go Mod (注:比较常用的是 init,tidy, edit)
go mod init name create modules (创建包名 注: 包名在 import 引入自定义包时替代GOPATH)
go mod download download modules to local cache(下载依赖包)
go mod edit edit go.mod from tools or scripts(编辑go.mod)
go mod graph print module requirement graph (打印模块依赖图)
go mod verify initialize new module in current directory(在当前目录初始化mod)
go mod tidy add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
go mod vendor make vendored copy of dependencies(将依赖复制到vendor下)
go mod verify verify dependencies have expected content (验证依赖是否正确)
goctl 介绍
#goctl 是一个基于 Go 语言的开发工具,主要用于生成各种语言(如 Go、Java、PHP 等)的 API 代码和文档。goctl 命令提供了很多有用的子命令,下面是一些常见的子命令及其介绍:
#api: 生成 API 代码的命令。可以根据 .proto 文件生成对应的 Go、Java、PHP 等语言的代码。
#plugin:安装或升级插件。
#sql:根据数据库表生成对应的 Go、Java、PHP 等语言的代码。
#rpc:生成 RPC 代码的命令。可以根据 .proto 文件生成对应的 Go、Java、PHP 等语言的代码。
#dockerfile:生成 Dockerfile 文件的命令。
#kubernetes:生成 Kubernetes 部署文件的命令。
#grpc-gateway:生成 grpc-gateway 代理服务代码的命令。
#api plugin:为 api 子命令安装或升级插件。
#sql plugin:为 sql 子命令安装或升级插件。
#gen plugin:为 goctl 工具安装或升级插件。
#注意:以上子命令只是 goctl 提供的部分命令,更多详情请使用 goctl -h 查看。
go api new demo #生成代码块
Go编译
目录结构
- 根目录
- api # 存放使用 Protocol Buffers 定义的 API 接口文件。
- etc # 存放其他配置文件,如限流配置、路由配置等。
- internal # 存放项目的内部代码
- biz # 业务逻辑代码
- config # 存放项目的配置代码
- handler # 存放函数相关代码
- logic # 存放公共业务逻辑代码
- middleware # 存放中间件相关的代码
- model # 存放数据模型相关的代码。
- pkg # 存放代码库相关代码
- svc # 存放服务上下文相关的代码。
- types # 自定义类型、结构体、接口
main.go # 项目的入口文件。
go.mod
编译Shell
#!/bin/bash
#修改go配置
export GOPROXY="https://goproxy.cn"
#拉取缺少的模块,移除不用的模块
go mod tidy
#跨系统编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./main main.go
Git打包
#!/bin/bash
prefix=`git status|grep 'On branch'|awk '{print $3}'`'-'`date "+%Y%m%d"`
git push
git pull --tags
tag_name="${prefix}-"`git tag -l "${prefix}*"|wc -l|xargs printf "%02d\n"`
git tag ${tag_name}
git push --tags
Dockerfile
# 基础镜像
FROM docker.io/alpine:3.13.5
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 时区文件
COPY localtime /etc/localtime
# 用RUN_MODE来区分环境 (0-开发环境,1-生产,2-测试,3-预上线)
ENV RUN_MODE 1
# 代码目录
WORKDIR /data/work/zhw-code
# 拷贝程序和配置文件
COPY main ./main
COPY conf ./conf
COPY cmd ./cmd
# 拷贝其他文件,如静态文件、模版等目录,在下面逐条新增COPY指令
COPY public ./public
# COPY static ./static
# 程序监听的端口,根据实际情况修改
EXPOSE 9100
CMD ["./main"]
发布说明
#1.拉取代码
git checkout tag_name
#2.编译文件
export GOPROXY='https://goproxy.cn' && go mod tidy && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./main main.go
#3.拷贝代码
#3.1需要有静态资源(目录是static)
mkdir -p work && cp -a main ./work/ && cp -a static ./work/
#3.2不需要有静态资源
#mkdir -p work && cp -a main ./work/
#4.构建代码镜像 - Dockerfile 中 ENV RUN_MODE 1 (0-开发环境,1-生产,2-测试,3-预上线)
docker build -f Dockerfile -t image_name .
#5.发布代码
kubectl apply -f filename.yaml
标签:git,代码,笔记,go,Go,定时,main,mod
From: https://blog.51cto.com/lzcit/9305040