使用脚本从git上拉取项目并运行, 有些不足的地方

编写脚本

run.sh

如果用到redis和myslq,要先启动redis和mysql

#!/bin/bash
# author:qiao
# 更新项目并打包 jarname=""; # jar包的名字
jarpath=""; # jar包打包之后的位置 # 需要传递用户名,密码,项目名
function cloneApp() {
echo "======git正在colne【$3】======";
`sudo rm -rf /usr/dev/git/app/$3`
docker run --rm \
-v ~/.ssh/:/root/.ssh/ \
-v /usr/dev/git/app:/git alpine/git \
clone https://$1:$2@gitee.com/w1418/$3.git;
echo -e "\033[34m =====项目colne之后的地址为:user/dev/git/app/$3====== \033[0m";
} # 更新项目
function pullApp() {
docker run \
-v ~/.ssh/:/root/.ssh/ \
-v /usr/dev/git/app:/git \
-w /git/"$1" alpine/git \
pull origin master
} # 打包项目
function mvnPackage() {
projectname=${1:-'w1418-springboot-framework'};
echo -e "\033[34m======maven正在打包${projectname}======\033[0m";
# 删掉正在运行的
docker rm -f $projectname;
docker run --rm --name $projectname \
-v /usr/dev/git/app/$projectname:/usr/src/mymaven \
-v /usr/maven-repo:/root/.m2 \
-w /usr/src/mymaven maven:3.3-jdk-8 mvn clean package # 获取target目录下的jar文件路径
getJar /usr/dev/git/app/$projectname/target;
echo -e "\033[34m======maven打包完成${jarpath}======\033[0m";
} # 将maven打的jar包复制到jdk挂载的目录
function cpjar() {
echo "======$2正在复制======";
if [ "$1" = "jdk" ]; then
# 创建目录
`sudo mkdir -p /usr/dev/project/`
`sudo cp $2 /usr/dev/project/`
echo -e "\033[34m======$2复制到/usr/dev/project/目录======\033[0m";
elif [ "$1" = "tomcat" ]; then
`sudo mkdir -p /usr/dev/docker-tomcat/webapps/`
`sudo cp $2 /usr/dev/docker-tomcat/webapps/`
echo -e "\033[34m======$2复制到/usr/dev/docker-tomcat/webapps目录======\033[0m";
fi } # 获取文件夹里面以.jar结尾的文件
function getJar() {
for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
do
if [ -f $1"/"$file ]; then # 判断是否是一个文件
# 贪婪地删除任意字符直到遇到. 然后与jar或者war匹配
if [ "${file##*.}" = "jar" ] || [ "${file##*.}" = "war" ]; then #判断后缀是.jar|.war结尾的文件
jarpath=$1"/"$file; #在此处处理文件即可
jarname=$file;
fi
fi
done
} function runTomcat() {
# 删掉正在运行的
docker rm -f mytomcat;
echo -e "\033[34m======正在启动tomcat======\033[0m"
docker run -itd -p 8080:8080 --name mytomcat \
-v /usr/dev/docker-tomcat/logs/:/usr/local/tomcat/logs \
-v /usr/dev/docker-tomcat/webapps/:/usr/local/tomcat/webapps --privileged=true \
tomcat:8.5
echo "======tomcat启动成功======"
echo -e "\033[34m======tomcat端口为8080 项目和日志存放路径为:/usr/dev/docker-tomcat/logs, /usr/dev/docker-tomcat/webapps======\033[0m"
} # jdk运行的项目放在/usr/dev/project/目录下
function runJDK() {
# 删掉正在运行的
docker rm -f $2
echo -e "\033[34m======jdk启动正在后台启动项目======\033[0m"
docker run -p 8080:8080 --name $2 \
-v /usr/dev/project/:/home/ \
-d fabric8/java-alpine-openjdk8-jdk java -jar /home/$1 --spring.profiles.active=pro
} # 运行项目
function run() {
if [ "$1" = "tomcat" ]; then
runTomcat;
elif [ "$1" = "jdk" ]; then
runJDK $jarname $2;
fi
} # 初始化
function init() {
if [ "$2" = "clone" ]; then
username=$3; # 这样定义的变量username是全局变量
password=$4; # ${4:-'qiao123456'} 可以这样给默认值
projectname=$5; #项目名默认是w1418-springboot-framework
# clone项目
cloneApp $username $password $projectname;
else
projectname=$5
pullApp $projectname;
fi
mvnPackage $projectname;
cpjar $1 $jarpath;
run $1 $5;
} if [ $# -lt 5 ]
then
echo "error 参数个数必须是5个以上"
exit 1 # 终止当前脚本执行 非0表示失败(这里式退出码1)
else
init $1 $2 $3 $4 $5
fi

运行

sh run.sh jdk clone uncleqiao 码云密码 w1418-springboot-framework

run.sh 是脚本名

p1: 是使用tomcat运行还是jdk直接运行jar包

p2: 是clone还是pull项目

p3: 码云用户名

p4: 码云密码

p5: 项目名

docker自动化脚本的更多相关文章

  1. 从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  2. Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  3. 微服务项目的docker自动化部署流程

    目录 微服务的Docker自动化部署 制作JDK1.8的Docker镜像 Docker常用命令介绍 制作image的一般流程 将本地的image上传至私人仓库 使用Maven插件实现自动化docker ...

  4. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

  5. 自动化脚本中click()或sendKeys()没有反应

    前提: 排除xpath引用错误或元素的xpath每次都不同的情形. 问题描述 自动化脚本中click()方法和sendKeys()方法报错, 返回异常InvocationTargetException ...

  6. appium-desktop录制脚本二次开发,生成我司自动化脚本

    目的 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求. 实现步骤 1.增加元素名称的输入框 由于ATK(我司自动化测试框架)脚本中元素是以“ap ...

  7. Jenkins构建自动化脚本执行无界面解决方法

    场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...

  8. 【Zabbix】Zabbix-agent自动化脚本

    zabbix-agent自动化脚本 作用:批量部署zabbix-agent.用于上百台虚拟机都可以被Zabbix监控. 脚本名:inst-agent.sh #!/bin/bash echo " ...

  9. PHP学习日记 Windows配置PHP+Nginx+自动化脚本

    Windows配置PHP+Nginx+自动化脚本 安装与配置 PHP 下载PHP:传送门 选择合适的版本下载 尽量选Thread Safe 配置PHP: 解压后在文件夹中找到php.ini-devel ...

随机推荐

  1. 学生管理系统(Nodejs)

    一.项目介绍 ①使用nodejs+bootstrap开发 ②对文件进行合理的模块化 ③实现基本的增删改查功能 二.思路 ①处理模块,处理模块,配置开发静态资源,配置模块引擎 ②路由设计,提取路由模块 ...

  2. JavaScript高级程序编程(一)

    第一章 JavaScript简史  20170510 JavaScript 组成部分: 核心(ECMAScript)  文档对象模型(DOM)浏览器对象模型(BOM) Netscape Navigat ...

  3. 计蒜客 39280.Travel-二分+最短路dijkstra-二分过程中保存结果,因为二分完最后的不一定是结果 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest M.) 2019ICPC西安邀请赛现场赛重现赛

    Travel There are nn planets in the MOT galaxy, and each planet has a unique number from 1 \sim n1∼n. ...

  4. mysql sin() 函数

    mysql> ); +---------------------+ | sin(PI()/) | +---------------------+ | 0.49999999999999994 | ...

  5. Redis 下载 安装

    Redis 官网 https://redis.io/ github 主页 https://github.com/antirez/redis 下载页面 https://redis.io/download ...

  6. ICEM-二维Y型网格的一种做法

    原视频下载地址:https://pan.baidu.com/s/1nvSBHoP 密码: uqy3

  7. 多线程 fork/join 并行计算

    1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...

  8. 【数值分析】Python实现Lagrange插值

    一直想把这几个插值公式用代码实现一下,今天闲着没事,尝试尝试. 先从最简单的拉格朗日插值开始!关于拉格朗日插值公式的基础知识就不赘述,百度上一搜一大堆. 基本思路是首先从文件读入给出的样本点,根据输入 ...

  9. 第10组 Beta冲刺(3/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增修改用户信息.任务完成反馈等功能API 服务器后端部署,API接口的bet ...

  10. Linux Shell:Map的用法

    Map定义: 在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明 方式1: declare -A myMap myMap[" 方式2: declare -A myMap ...