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

编写脚本

run.sh

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

  1. #!/bin/bash
  2. # author:qiao
  3. # 更新项目并打包
  4. jarname=""; # jar包的名字
  5. jarpath=""; # jar包打包之后的位置
  6. # 需要传递用户名,密码,项目名
  7. function cloneApp() {
  8. echo "======git正在colne【$3】======";
  9. `sudo rm -rf /usr/dev/git/app/$3`
  10. docker run --rm \
  11. -v ~/.ssh/:/root/.ssh/ \
  12. -v /usr/dev/git/app:/git alpine/git \
  13. clone https://$1:$2@gitee.com/w1418/$3.git;
  14. echo -e "\033[34m =====项目colne之后的地址为:user/dev/git/app/$3====== \033[0m";
  15. }
  16. # 更新项目
  17. function pullApp() {
  18. docker run \
  19. -v ~/.ssh/:/root/.ssh/ \
  20. -v /usr/dev/git/app:/git \
  21. -w /git/"$1" alpine/git \
  22. pull origin master
  23. }
  24. # 打包项目
  25. function mvnPackage() {
  26. projectname=${1:-'w1418-springboot-framework'};
  27. echo -e "\033[34m======maven正在打包${projectname}======\033[0m";
  28. # 删掉正在运行的
  29. docker rm -f $projectname;
  30. docker run --rm --name $projectname \
  31. -v /usr/dev/git/app/$projectname:/usr/src/mymaven \
  32. -v /usr/maven-repo:/root/.m2 \
  33. -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean package
  34. # 获取target目录下的jar文件路径
  35. getJar /usr/dev/git/app/$projectname/target;
  36. echo -e "\033[34m======maven打包完成${jarpath}======\033[0m";
  37. }
  38. # 将maven打的jar包复制到jdk挂载的目录
  39. function cpjar() {
  40. echo "======$2正在复制======";
  41. if [ "$1" = "jdk" ]; then
  42. # 创建目录
  43. `sudo mkdir -p /usr/dev/project/`
  44. `sudo cp $2 /usr/dev/project/`
  45. echo -e "\033[34m======$2复制到/usr/dev/project/目录======\033[0m";
  46. elif [ "$1" = "tomcat" ]; then
  47. `sudo mkdir -p /usr/dev/docker-tomcat/webapps/`
  48. `sudo cp $2 /usr/dev/docker-tomcat/webapps/`
  49. echo -e "\033[34m======$2复制到/usr/dev/docker-tomcat/webapps目录======\033[0m";
  50. fi
  51. }
  52. # 获取文件夹里面以.jar结尾的文件
  53. function getJar() {
  54. for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
  55. do
  56. if [ -f $1"/"$file ]; then # 判断是否是一个文件
  57. # 贪婪地删除任意字符直到遇到. 然后与jar或者war匹配
  58. if [ "${file##*.}" = "jar" ] || [ "${file##*.}" = "war" ]; then #判断后缀是.jar|.war结尾的文件
  59. jarpath=$1"/"$file; #在此处处理文件即可
  60. jarname=$file;
  61. fi
  62. fi
  63. done
  64. }
  65. function runTomcat() {
  66. # 删掉正在运行的
  67. docker rm -f mytomcat;
  68. echo -e "\033[34m======正在启动tomcat======\033[0m"
  69. docker run -itd -p 8080:8080 --name mytomcat \
  70. -v /usr/dev/docker-tomcat/logs/:/usr/local/tomcat/logs \
  71. -v /usr/dev/docker-tomcat/webapps/:/usr/local/tomcat/webapps --privileged=true \
  72. tomcat:8.5
  73. echo "======tomcat启动成功======"
  74. echo -e "\033[34m======tomcat端口为8080 项目和日志存放路径为:/usr/dev/docker-tomcat/logs, /usr/dev/docker-tomcat/webapps======\033[0m"
  75. }
  76. # jdk运行的项目放在/usr/dev/project/目录下
  77. function runJDK() {
  78. # 删掉正在运行的
  79. docker rm -f $2
  80. echo -e "\033[34m======jdk启动正在后台启动项目======\033[0m"
  81. docker run -p 8080:8080 --name $2 \
  82. -v /usr/dev/project/:/home/ \
  83. -d fabric8/java-alpine-openjdk8-jdk java -jar /home/$1 --spring.profiles.active=pro
  84. }
  85. # 运行项目
  86. function run() {
  87. if [ "$1" = "tomcat" ]; then
  88. runTomcat;
  89. elif [ "$1" = "jdk" ]; then
  90. runJDK $jarname $2;
  91. fi
  92. }
  93. # 初始化
  94. function init() {
  95. if [ "$2" = "clone" ]; then
  96. username=$3; # 这样定义的变量username是全局变量
  97. password=$4; # ${4:-'qiao123456'} 可以这样给默认值
  98. projectname=$5; #项目名默认是w1418-springboot-framework
  99. # clone项目
  100. cloneApp $username $password $projectname;
  101. else
  102. projectname=$5
  103. pullApp $projectname;
  104. fi
  105. mvnPackage $projectname;
  106. cpjar $1 $jarpath;
  107. run $1 $5;
  108. }
  109. if [ $# -lt 5 ]
  110. then
  111. echo "error 参数个数必须是5个以上"
  112. exit 1 # 终止当前脚本执行 非0表示失败(这里式退出码1)
  113. else
  114. init $1 $2 $3 $4 $5
  115. fi

运行

  1. 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. 使用git_stats 统计分析git 仓库代码&& 集成webhook

      前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行 命令,对于自动构建的还不是很方便,所以使用了git_stats 项目 ...

  2. Python 05 Geany的基本使用1

    问题01:代码中包含中文编译时提示错误 原文:https://blog.csdn.net/weixin_43345286/article/details/82951698 解决:文档 - 设置文件编码 ...

  3. 64、Spark Streaming:StreamingContext初始化与Receiver启动原理剖析与源码分析

    一.StreamingContext源码分析 ###入口 org.apache.spark.streaming/StreamingContext.scala /** * 在创建和完成StreamCon ...

  4. mysql sqrt() 函数

    mysql> ); +----------+ | sqrt() | +----------+ | | +----------+ row in set (0.00 sec)

  5. MAC 隐藏功能

    finder 类: shift+ cmd + G  (去指定路径) cmd+↑ (返回) cmd+↓(打开当前选中的文件,如果没有选中的则去选中第一个) cmd+ o (打开当前选中的文件) 以下这些 ...

  6. 第09组 Beta冲刺(4/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  7. Node.js 实现第一个应用以及HTTP模块和URL模块应用

    /* 实现一个应用,同时还实现了整个 HTTP 服务器. * */ //1.引入http模块 var http=require('http'); //2.用http模块创建服务 /* req获取url ...

  8. Java12新特性 -- JVM 常量 API

    Java 12 中引入 JVM 常量 API,用来更容易地对关键类文件 (key class-file) 和运行时构件(artefact)的名义描述 (nominal description) 进行建 ...

  9. Mac删除自带的abc输入法

    1. 安装软件:https://pan.baidu.com/s/15oIzTDojpignoR5MiZ-Q1A 安装并注册 2. 进入到目录,并打开: 1. /Users/toov5/Library/ ...

  10. matlab学习笔记10 一般运算符

    一起来学matlab-matlab学习笔记10 10_1一般运算符 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...