docker+jenkins+git+maven集成部署springboot项目

1、安装docker,yum install docker, 使用docker安装jenkins镜像   docker pull jenkins/jenkins

2、启动jenkins容器  docker run -d -p 9999:8080 -p 50000:50000 -v /root/jenkins:/home/jenkins --name jenkins jenkins/jenkins

3、启动jenkins页面,安装推荐插件,jenkins登录密码安装页面有提示,详细步骤请百度

4、配置maven、jdk、git插件,docker jenkins里面已经默认安装了jdk和git,找到jdk安装目录在jenkins全局设置里面配置

     git配置的是git的运行目录

maven可以在宿主机映射的/root/jenkins目录安装,然后配置maven的路径即可,我这里映射的是另外一个目录

5、安装jenkins的maven、git、ssh插件,在插件管理页面搜索安装,并在系统配置里配置ssh账号密码

6、配置项目git地址,使用用户名密码方式获取源码

7、配置maven编译脚本

8、编译部署

sh文件如下带参数运行时这样的  /root/demo1/run.sh "/root/demo1" "demo1" "image_demo1" "8080" "9999"

#!/bin/bash
#项目的路径
project_path=$1
#项目名称/容器名称
project_name=$2
#镜像名称
image_name=$3
#服务端口
server_port=$4
#映射端口
proxy_prot=$5
#时间
currTime=`date +"%Y-%m-%d %H:%M:%S"`
#切换到项目目录
cd ${project_path}
#停止项目容器
docker stop ${project_name}
#删除项目容器
docker rm ${project_name}
#删除项目镜像(暂时不删除保留历史)
#docker rmi ${image_name}
#计算容器版本
tags=`docker images --filter=reference='image_demo*' --format "{{.Tag}}"`
last=1
for tag in $tags
do
if [ $tag -ge $last ]
then
last=$tag
fi
done
last=`expr $last + 1`
#创建项目镜像(在旧镜像版本上加1)  --build-arg是运行Dockerfile的参数
docker build --build-arg project_name=${project_name} -t ${image_name}:$last .
#运行镜像/创建容器
docker run -d -p ${proxy_prot}:${server_port} --name ${project_name} ${image_name}:$last
# 查看进程是否存在
exist=""

while [ "${exist}" == "" ]
do
echo "容器启动中....."
sleep 5
exist=`docker inspect --format '{{.State.Running}}' ${project_name}`
done
#echo "容器启动完成!"
echo ${exist}

if [ "${exist}" != "true" ]; then
	# 记录
	echo "${currTime} 重启docker容器失败,容器名称:${project_name}"
	echo "尝试回滚到上一个版本"
	#这里只回滚到上一个版本,如果不成功可以写循环一直回滚之前的版本
	last=`expr $last - 1`
	#停止项目容器
	docker stop ${project_name}
	#删除项目容器
	docker rm ${project_name}
#运行镜像/创建容器
docker run -d -p ${proxy_prot}:${server_port} --name ${project_name} ${image_name}:$last

else
	echo "${currTime} 重启docker容器成功,容器名称:${project_name}"
fi

Dockerfile内容如下

# 基础镜像使用java openjdk
FROM openjdk:8-jre
ARG project_name
ARG active
ENV spring.profiles.active ${active}
#RUN echo $project_name
# 作者
MAINTAINER test test@qq.com
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD $project_name-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
RUN echo $active
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Duser.timezone=GMT+08","/app.jar"]

9、最后就可以构建项目了。

ps:也可以配合rancher打包成镜像,到rancher部署

#!/bin/bash
#项目名称/容器名称
project_name=$1
active=$2
#切换到项目目录
cd /root/demojar
#先删除旧的镜像
#docker rmi ${project_name}:1.0.0
#创建项目镜像  --build-arg是运行Dockerfile的参数
if [ "$active" = "" ];
then
docker build --build-arg project_name=${project_name} -t ${project_name}:1.0.0 -f /root/demojar/eurekaDockerfile .
else
docker build --build-arg project_name=${project_name} --build-arg active=${active} -t ${project_name}:1.0.0 .
fi
#添加镜像标签
docker tag ${project_name}:1.0.0 192.168.1.66:5000/${project_name}:1.0.0
#推送镜像
docker push 192.168.1.66:5000/${project_name}:1.0.0
#删除无用镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi

dockerfile示例

FROM openjdk:8-jdk-alpine
MAINTAINER xxx

ENV PARAMS=""
# 设置容器时区
ENV TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD target/*.jar /app.jar

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]

 jenkins打包到harbor示例

cd /home/jenkins_home/workspace/xxxxxx
docker rmi xxxxxx:1.0.0
docker rmi xxxxxx/xxxxxx/xxxxxx:1.0.0
docker build --build-arg project_name=xxxxxx -t xxxxxx:1.0.0 .
docker tag xxxxxx:1.0.0 xxxxxx/xxxxxx/xxxxxx:1.0.0
docker login -u admin -p admin xxxxxx
docker push xxxxxx/xxxxxx/xxxxxx:1.0.0

rancher配置私有镜像用户名密码

虚拟机ip地址修改

/etc/sysconfig/network-scripts 下的文件,一般是ifcfg-eth0     修改后内容如下

 TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=6c47b445-2d8d-4f22-9ea2-8957fc4a80b0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.209
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值