在第一篇harbor源码系列中,对整个体系做了拆分. 开发的主线是从源码--->构建----->部署.那么源码学习就要逆操作部署----->构建----->源码
先从部署开始,harbor的部署十分的简单,只要执行install.sh这个脚本,就可以完成部署,前提是docker,docker-compsose,python以及配置文件没问题.
这里给出一个环境基本清单
环境 | 版本 | 说明 |
---|---|---|
docker | 1.10.0+ | 依赖docker环境 |
docker-compsoe | 1.7.1+ | 编排工具 |
python | 2.7+ | 配置脚本及compose依赖 |
对于安装过程在此就不做详细介绍了.
环境预检
封装了两个函数check_docker和check_dockercompose,并判断打包好的镜像文件harbor*.tar.gz是否存在,
并做docker load处理
准备配置信息
这一步封装了python脚本prepare,在后续中将对该模块进行展开
检查是否部署
这一步很简单,就是检查环境中是否已经安装或启动了harbor
if [-n "$(docker-compose -f xxxx.yaml ps -q)" ]
then
// command
fi
注解:
-n str 标示字符串非空才返回true
启动docker-compose
加载并运行docker-compose脚本
docker-compose -f docker-compose.yml up -d
### shell 编程基础知识
该脚本比较简单,逻辑十分清晰.非常适合学习.总结了以下的知识点,可以作为今后写shell脚本的一个参考范本
**set的作用**
参考阮一峰博客[Bash 脚本 set 命令教程](http://www.ruanyifeng.com/blog/2017/11/bash-set.html)
**格式化输出**
这块可以在今后的shell脚本中复用
bold=$(tput bold)
underline=$(tput sgr 0 1)
reset=$(tput sgr0)
red=$(tput setaf 1)
green=$(tput setaf 76)
white=$(tput setaf 7)
tan=$(tput setaf 202)
blue=$(tput setaf 25)
underline() { printf "${underline}${bold}%s${reset}\n" "$@"
}
h1() { printf "\n${underline}${bold}${blue}%s${reset}\n" "$@"
}
h2() { printf "\n${underline}${bold}${white}%s${reset}\n" "$@"
}
debug() { printf "${white}%s${reset}\n" "$@"
}
info() { printf "${white}➜ %s${reset}\n" "$@"
}
success() { printf "${green}✔ %s${reset}\n" "$@"
}
error() { printf "${red}✖ %s${reset}\n" "$@"
}
warn() { printf "${tan}➜ %s${reset}\n" "$@"
}
bold() { printf "${bold}%s${reset}\n" "$@"
}
note() { printf "\n${underline}${bold}${blue}Note:${reset} ${blue}%s${reset}\n" "$@"
}
**参数输出程序架子**
while $# -gt 0 ; do
case $1 in
--help)
print "help....."
exit 0;;
--agr1)
// command;;
*)
print "$usage"
exit 1;;
esac
shift || true
done
注解:
shift 每次运行shift(不带参数的),销毁一个参数,后面的参数前移
dirname的用法
在脚本中
···
workdir="$( cd "$( dirname "${BASH_SOURCE0}" )" && pwd )"
···
注解:
BASH_SOURCE0 获得当前执行的shell文件所在的路径及文件名
dirname dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容
正则匹配
=~ 表示一种正则匹配
本篇文章通过对安装脚本进行展开,逐步分解了这一过程,又对shell脚本做了一次巩固学习.收获颇多.
在下一篇中,将对环境配置脚本prepare进行展开学习
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。