结合docker发布后端项目(基于gradle包管理)的shell脚本


本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记。

注:基于linux操作系统(敏感信息都进行了处理)

目前主流的前后端分离的项目中,常常在部署上线这个环节会遇到很多麻烦,这里我使用了docker进行部署,这段shell脚本我放在前端工程目录下,每次要部署上线时运行这个文件,可以很方便的帮助上线。注解都写在了代码中。
#!/usr/bin/env bash

// 以下使用变量存放配置信息
jarName="your_name-0.0.1-SNAPSHOT.jar"
BUILD_PROFILE="prod"
port=7006
LOGIN_COMMAND="login --username=... -p=... registry.cn-shenzhen.aliyuncs.com"
DOCKER_NAME="your_name"
repo="registry.cn-shenzhen.aliyuncs.com/your_name/${DOCKER_NAME}:latest"
JOB_NAME=${DOCKER_NAME}
REMOTE_SERVER="root@100.100.100.100" # Compile
echo Start to compile... // 开始打包
./gradlew clean&& ./gradlew build -x test // 使用gradle进行打包 cd ci // 脚本存放在ci目录下,进入该目录
jarPath=../build/libs/${jarName} // 定位打包出来的路径
cp -rf ${jarPath} app.jar // 将打包后的jar包拷贝到ci目录下,同时更名为app.jar # Docker
echo Start to build docker... // 开始构建docker镜像 // 以下通过Dockerfile文件构建镜像,Dockerfile会在另一篇博客中讲到
docker build \
-t ${DOCKER_NAME} \
--build-arg JAR_FILE="app.jar" \
--build-arg PROFILE=${BUILD_PROFILE} \
--no-cache . // 推送镜像到远程仓库
docker ${LOGIN_COMMAND}
docker tag ${DOCKER_NAME} ${repo}
docker push ${repo} // 删除临时产生的jar包
rm -rf app.jar # Deploy
echo deploy to remote server... // 通过ssh登录远程服务器,并执行命令:拉取镜像,构建容器
ssh ${REMOTE_SERVER} "
docker ${LOGIN_COMMAND};
docker pull ${repo};
docker rm -f $JOB_NAME || true;
docker run -d -p ${port}:${port} --name ${JOB_NAME} ${repo};"

结合docker发布后端项目(基于gradle包管理)的shell脚本的更多相关文章

  1. 结合docker发布前端项目(基于npm包管理)的shell脚本

    结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...

  2. 【linux】【jenkins】自动化运维四 整合gitlab、docker发布java项目

    jenkins发布java项目 过程参考发布vue项目.https://www.cnblogs.com/jxd283465/p/11543431.html 大同小异. vue建立的是Freestyle ...

  3. 【linux】【jenkins】自动化运维三 整合gitlab、docker发布vue项目

    由于工作需要,这里我先创建一个vue的工程. 1.首先安装好gitlab相关插件:GitLab.GitLab Hook.NodeJS 插件安装参考:https://www.cnblogs.com/jx ...

  4. 使用Docker发布DNC项目

    项目结构 可以忽略中间三个Console项目 ApiCenter 是一个WebAPI项目,引用了NLog.MQ项目 ApiCenter使用5001端口 public static IWebHost B ...

  5. vmware14中安装centos7并使用docker发布spring-boot项目

    1.vmare中centos7安装(同一路由器无线网络下) 1.1选择桥接模式 1.2修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33(这里不一 ...

  6. Rust 之 cargo(项目构建和包管理工具)

    如果食用cargo来进行项目构建: 1. 执行 cargo new hello_cargo --bin ,执行完上面的操作之后,我们切换到hell_cargo目录下,可以看到一个文件(Cargo.to ...

  7. Homebrew 1.0.0 发布,MacOS 上的包管理器,比如安装qt5keychain

    神器,没有它不知道怎么用macos https://www.oschina.net/news/77367/homebrew-1-0-0 Mac OS X用户,qt5keychain可以使用homebr ...

  8. Homebrew 1.0.0 发布,MacOS 上的包管理器

    神器,没有它不知道怎么用macos https://www.oschina.net/news/77367/homebrew-1-0-0

  9. 原创-公司项目部署交付环境预检查shell脚本

    大型项目环境预检查脚本,根据自己实际情况修改脚本中变量,给大家一个思路~ #!/usr/bin/env bash root=$( cd $(dirname $0) pwd ) source " ...

随机推荐

  1. nginx简单使用(windows)

    本篇文章对术语不作讲解 下载nginx 首先,进入nginx官网http://nginx.org/en/download.html. 找到Stable version,此处的版本是稳定版本: 下载完成 ...

  2. Android Studio(二):快捷键设置、插件安装

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  3. [转]【Linux】Linux 目录结构

    初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp ...

  4. Python--day42--mysql创建用户及授权

    1,打开mysql数据库命令:mysql -u root -p 2,创建数据库create database db2; 2,删除数据库drop database db2; 2,展示有多少个文件夹:sh ...

  5. H3C 高级ACL

  6. Vue的第一个实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. js基础-原型

    1.定义:我们创建的函数都有一个prototype(原型)属性,该属性是一个对象,          原型模式声明中多了两个属性(自动生成). 构造函数:       function Box(nam ...

  8. P1035 台阶问题二

    题目描述 有 \(N\) 级的台阶,你一开始在底部,每次可以向上迈最多 \(K\) 级台阶(最少 \(1\) 级),问到达第 \(N\) 级台阶有多少种不同方式. 输入格式 两个正整数 \(N, K( ...

  9. vue中处理时间格式化的问题

    vue main.js中修改Date原型链,插入(百度) Date.prototype.format = function(fmt) { var o = { "M+" : this ...

  10. Tufurama CodeForces - 961E (cdq分治)

    题面 One day Polycarp decided to rewatch his absolute favourite episode of well-known TV series " ...