docker 运行jenkins及vue项目与springboot项目:

1.立即构建

输入任务名称:service_blog

选择maven项目(先要在插件管理中安装maven插件)

2.配置
源码管理

选择git(先要在插件管理中安装git插件)

输入git地址、秘钥及需要打包的分支

Pre Steps

Build: pom.xml,输入maven命令clean package

Post Steps:add post-build step->选择执行shell

输入shell命令:

				#!/bin/bash

				#下面的路径都是指jenkins容器中的路径,非宿主机服务器的路径(通过该命令进入容器查看:docker exec -it {jenkins容器id} /bin/bash)
#操作/项目路径(Dockerfile[下附配置]存放的路径)
BASE_PATH=/var/jenkins_home/service
# 源jar路径(jenkins利用maven打包项目的jar包的路径,其service_blog则为构建时输入的任务名称)
SOURCE_PATH=/var/jenkins_home/workspace/service_blog/target
#docker 镜像/容器名字 这里都命名为这个(自定义)
SERVER_NAME=service-blog
#jar名字(jenkins利用maven打包项目的jar包名称)
JAR_NAME=personal_blog-0.0.1-SNAPSHOT
#容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images -a | grep "$SERVER_NAME" | awk '{print $3}') DATE=`date +%Y%m%d%H%M` # 最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME.jar 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH/$JAR_NAME.jar $BASE_PATH/
echo "迁移完成"
} # 备份
function backup(){
if [ -f "$BASE_PATH/$JAR_NAME.jar" ]; then
echo "$JAR_NAME.jar 备份..."
cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
echo "备份 $JAR_NAME.jar 完成"
else
echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
fi
} # 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID,删除后重新构建"
docker rmi $IID
echo "删除完毕,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
fi
} # 运行docker容器
function run(){
echo "执行backup ..."
backup
echo "执行transfer ..."
transfer
echo "执行build ..."
build
echo "docker run ..."
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,停止后 删除,重新创建启动"
docker stop $CID
docker rm $CID
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
echo "$SERVER_NAME容器重启完成"
else
echo "不存在$SERVER_NAME容器,docker run创建容器..."
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
echo "$SERVER_NAME容器创建完成"
fi
} #入口
run

springboot项目的Dockerfile配置:

			#基于openjdk:8
FROM openjdk:8 ADD personal_blog-0.0.1-SNAPSHOT.jar personal_blog.jar # 指定当前操作目录
WORKDIR /var/jenkins_home/service ADD personal_blog-0.0.1-SNAPSHOT.jar personal_blog.jar
RUN bash -c 'touch /personal_blog.jar'
ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx1024m","-Xms1024m","/personal_blog.jar"]

保存配置

3.立即构建

查看控制台,看看是否有错误,最后是否success

查看springboot应用的日志,看看是否启动成功,是否有错误:docker logs -f --tail=100 {容器id}

docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)的更多相关文章

  1. 使用IDEA打包scala程序并在spark中运行

    一.首先配置ssh无秘钥登陆, 先使用这条命令:ssh-keygen,然后敲三下回车: 然后使用cd .ssh进入 .ssh这个隐藏文件夹: 再创建一个文件夹authorized_keys,使用命令t ...

  2. iOS多线程的初步研究(五)-- 如何让NSURLConnection在子线程中运行

    可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...

  3. SpringBoot项目打成一个war包

    springboot 带有内置Tomcat 服务器,可以直接将项目打包成jar运行,运行命令为: java -jar demo.jar 但是如果在需要把项目达成war包该怎么办呢?下面是将spring ...

  4. Appium 从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用

    转载:https://testerhome.com/topics/4960 在上一篇文章中,我对本系列教程的项目背景进行了介绍,并对自动化测试平台的建设进行了规划. 在本文中,我将在已准备就绪的iOS ...

  5. Nodejs的安装配置及如何在sublimetext2中运行js

    Nodejs的安装配置及如何在sublimetext2中运行js听语音 | 浏览:4554 | 更新:2015-06-16 11:29 Nodejs的安装配置及如何在sublimetext2中运行js ...

  6. docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  7. docker 运行jenkins及vue项目与springboot项目(一.安装docker)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  8. docker 运行jenkins及vue项目与springboot项目(二.docker运行jenkins为自动打包运行做准备)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  9. docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

随机推荐

  1. 获取当前的方法名字,运用线程类Thread

    得到当前方法的名字String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); getStackTrac ...

  2. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读

    一.HBase的历史由来 HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性.高性能.高伸缩的分布式存储系统,使用HBase技术可在廉价PC Se ...

  3. 基于Lucene查询原理分析Elasticsearch的性能

    前言 Elasticsearch是一个很火的分布式搜索系统,提供了非常强大而且易用的查询和分析能力,包括全文索引.模糊查询.多条件组合查询.地理位置查询等等,而且具有一定的分析聚合能力.因为其查询场景 ...

  4. 替换OSD操作的优化与分析

    http://www.zphj1987.com/2016/09/19/%E6%9B%BF%E6%8D%A2OSD%E6%93%8D%E4%BD%9C%E7%9A%84%E4%BC%98%E5%8C%9 ...

  5. [CSP-S模拟测试76]题解

    咕咕咕 A.序列 无解情况:$n>a*b$或$n<a+b-1$ 把序列分成B段,每段内部上升,各段分界处构成下降子序列. 实现并不是太简单,要动态地考虑一下边界什么的. #include& ...

  6. 2018-2019-20175203 实验二 《Java面向对象程序设计》

    2018-2019-20175203 实验二 <Java面向对象程序设计>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑 ...

  7. codeforces gym100418J

    题目简述 给定N 求1到N中有多少个幸运数字 幸运数字的定义为 这个数能被它二进制表示下1的个数整除 其中(1 ≤ N ≤ 1019) -------------------------------- ...

  8. Python中生成器和yield语句的用法详解

    Python中生成器和yield语句的用法详解 在开始课程之前,我要求学生们填写一份调查表,这个调查表反映了它们对Python中一些概念的理解情况.一些话题("if/else控制流" ...

  9. github 上的PHP资源大全

    依赖管理 ——用于依赖管理的包和框架Composer/Packagist : 一个包和依赖管理器Composer Installers:  一个多框架Composer库安装器Pickle: 可以在任意 ...

  10. 【excel】 超链接相关

    如何导出超链接: 用visual basic处理 在excel中:Alt+F11 --> F7 --> 粘贴下面代码 -->F5(运行), 则会在原列接右侧出现超链  Sub Ext ...