Shell脚本打包Go、Vue和上传至Docker仓库记录

xiaohai 2020-08-20 15:39:48 3005人围观 标签: Docker  shell 
简介有时候为了打包需要敲很多命令,实在比较麻烦,所以这里记录了如何通过shell脚本将这些命令全部集中起来,后面可以直接执行该脚本就把需要的所有命令跑完。

完整打包一个Go应用是比较麻烦,会有各种命令,因为涉及到前端Vue、Go编译和Docker等。比如需要先打包静态文件,编译Golang二进制包,上传Docker仓库,然后做一些清理工作。这里主要记录使用一个shell脚本将所有的命令全部写入进去,等后面需要再次需要重复上面的步骤时,就可以只执行该脚本即可。

1、脚本文件内容如下

使用该脚本的时候需要对 !!!xxxx!!! 这个内容进行替换成自己的信息

#镜像名称 image_name="!!!!镜像名称!!!!" #docker仓库地址 docker_addr="!!!!自己的仓库地址!!!!/${image_name}" #版本号需要在执行脚本的时候进行输入,格式为0.0.1的格式 version=$1 if [ $# -ne 1 ];then echo "只能包含一个版本号参数,如1.0.0、1.21.23" exit fi #定义编译函数 build(){ #编译后台界面资源文件 cd templates/ && npm run build --pro && cd ../ #删除编译的文件 rm -rf ${image_name} #使用bindata打包所有的静态文件 go-bindata -o=bindata/bindata.go -pkg=bindata ./templates/dist/... #编译 go build --tags netgo -o ${image_name} #编译镜像 docker build -t ${image_name}:${version} . --network=host #镜像打tag docker tag ${image_name}:${version} ${docker_addr}:${version} docker tag ${image_name}:${version} ${docker_addr}:latest #推送镜像 docker push ${docker_addr}:${version} docker push ${docker_addr}:latest #删除镜像 docker rmi ${image_name}:${version} ${docker_addr}:latest ${docker_addr}:${version} } #提示信息 read -r -p "确认当前版本使用:${version} 版本号编译Docker镜像吗? [Y/n] " input case $input in [yY][eE][sS]|[yY]) build ;; [nN][oO]|[nN]) echo "退出" ;; *) echo "输入错误,退出" exit 1 ;; esac
2、编译前准备
  • 首先,检查本地是否安装了编译所需要的环境
  • 其次,检查仓库是否进行了登录,命令如下
docker login 仓库地址
  • 最后,要讲上面的内容存在项目根目录下,并设置成可执行权限
3、执行脚本
> ./build.sh 0.0.1 #编译成0.0.1版本