部署

ECS服务器

  1. 克隆项目代码到服务器上

  2. 将代码编译成二进制可执行文件

export GDD_ENV=prod && go build -o api cmd/main.go 
1
  1. 启动可执行文件,推荐用screen命令或pm2在新窗口打开,这里以screen命令为例,先创建一个窗口screen -S app,窗口名字叫app,启动程序./appctrl + a + d可以退出screen,screen -r app可以打开刚才创建的app窗口,查看命令行终端输出的日志。

提示

如果是Centos服务器,screen的安装命令是yum install -y screen

想看当前开启的窗口列表,可用screen -ls命令

➜  ~ screen -ls   
There is a screen on:
	16048.app	(Detached)
1 Socket in /var/run/screen/S-root.
1
2
3
4

如果想删掉app窗口,可以先执行命令screen -r app登录进去,再输入exit回车,就退出并且删除app窗口了。

➜  ~ screen -r app
[screen is terminating]
➜  ~  
➜  ~ screen -ls   
No Sockets found in /var/run/screen/S-root.
1
2
3
4
5

一般程序员日常开发掌握这几个命令已经做够了。

Docker

你可以直接使用go-doudou svc init命令生成的Dockerfile,也可以根据实际项目需求修改。

先下载依赖到vendor文件夹

go mod vendor
1

再打包镜像

docker build -t myservice . 
1

最后执行docker run命令

docker run -it -d -p 6060:6060 myservice
1

需要把myservice改成你自己的镜像名称。

Kubernetes

go-doudou开箱支持k8s部署。

  1. 执行go-doudou svc push命令可以打包镜像并推送到远程镜像仓库,最后生成两份k8s部署文件,一个用于部署无状态服务,一个用于部署有状态服务。
go-doudou svc push --pre godoudou_ -r wubin1989
1

可以通过--pre参数设置镜像名称前缀。需要将wubin1989改成你自己的远程镜像仓库地址。

每次执行此命令都会自动更新镜像的版本号,命名规则为v + yyyyMMddHHmmss,同时自动更新k8s部署文件里的镜像名称。

  1. 执行go-doudou svc deploy命令。此命令默认采用_deployment.yaml后缀的文件部署无状态服务。你可以通过-k参数设置其他k8s部署文件路径。