利用jenkins实现容器化自动构建微服务项目

Source

dockerfile编写

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8066"]

EXPOSE 8066

ENTRYPOINT ["java","-jar","/app.jar"]

jenkins配置

 构建一个maven的项目,用来将开发的源码打包成jar包,然后就是在脚本中实现docker镜像的构建

#!/bin/bash
jenkins_war_home=/var/lib/jenkins/workspace/
dockerfile_home=/var/lib/jenkins/
harbor_ip=192.168.1.154
harbor_user=admin
harbor_passwd=shuhai@123
echo '开始打包sh-web镜像'
#将jar包复制到dockerfile目录下
cp ${jenkins_war_home}paas-java-test/sh-web/back-web/target/*.jar ${dockerfile_home}/sh-web/dockerfile/
#判断镜像是否存在
image_id=`docker images |grep sh-web |awk '{print $3}'`
if [ -n "${image_id}" ];then
        docker rmi -f ${image_id}
fi
#到dockerfile目录下执行build
cd ${dockerfile_home}sh-web/dockerfile && docker build -t sh-web . &>/dev/null || echo 'build失败'
#将镜像push到harbor仓库
docker login $harbor_ip -u $harbor_user -p $harbor_passwd

docker tag sh-web 192.168.1.154/test/sh-web:v2

docker push 192.168.1.154/test/sh-web:v2 &>/dev/null || echo "push失败"

docker logout 192.168.1.154
echo "sh-web镜像打包完成"

脚本很简单,将jar包复制到dockerfile目录下执行docker build生成镜像,然后将镜像推到harbor私有仓库,就完成了docker镜像的推送