前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >harbor源码分析之部署脚本解析(二)

harbor源码分析之部署脚本解析(二)

原创
作者头像
暮雨
修改2018-10-15 11:20:03
7610
修改2018-10-15 11:20:03
举报
文章被收录于专栏:云端漫步

harbor部署

在第一篇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

代码语言:txt
复制
if [-n "$(docker-compose -f xxxx.yaml ps -q)" ]
then 
    // command
fi

注解:

-n str 标示字符串非空才返回true

启动docker-compose

加载并运行docker-compose脚本

代码语言:txt
复制

docker-compose -f docker-compose.yml up -d

代码语言:txt
复制
### shell 编程基础知识
该脚本比较简单,逻辑十分清晰.非常适合学习.总结了以下的知识点,可以作为今后写shell脚本的一个参考范本
**set的作用**

参考阮一峰博客[Bash 脚本 set 命令教程](http://www.ruanyifeng.com/blog/2017/11/bash-set.html)

**格式化输出**

这块可以在今后的shell脚本中复用

!/bin/bash

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" "$@"

}

代码语言:txt
复制
**参数输出程序架子**

while $# -gt 0 ; do

代码语言:txt
复制
  case $1 in
代码语言:txt
复制
          --help)
代码语言:txt
复制
          print "help....."
代码语言:txt
复制
          exit 0;;
代码语言:txt
复制
          --agr1)
代码语言:txt
复制
          // command;;
代码语言:txt
复制
          *)
代码语言:txt
复制
          print "$usage"
代码语言:txt
复制
          exit 1;;
代码语言:txt
复制
esac
代码语言:txt
复制
shift || true

done

代码语言:txt
复制

注解:

shift 每次运行shift(不带参数的),销毁一个参数,后面的参数前移

dirname的用法

在脚本中

···

workdir="$( cd "$( dirname "${BASH_SOURCE0}" )" && pwd )"

···

注解:

BASH_SOURCE0 获得当前执行的shell文件所在的路径及文件名

dirname dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容

正则匹配

=~ 表示一种正则匹配

总结

本篇文章通过对安装脚本进行展开,逐步分解了这一过程,又对shell脚本做了一次巩固学习.收获颇多.

在下一篇中,将对环境配置脚本prepare进行展开学习

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • harbor部署
  • 模块分解
  • !/bin/bash
    • 总结
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档