|NO.Z.00050|——————————|^^ 操作 ^^|——|CI/CD&Jenkins_Harbor操作.V07|——|Jenkins向docker中部署项目.V01|
一、CI/CD.Jenkins.Jenkins向docker中部署项目
### --- Jenkins构建Job
~~~ # 通过jenkins向docker主机中部署项目
~~~ ——>构建Maven风格的Job:代码地址:git@10.10.10.14:/home/git/easy-springmvc-maven.git
~~~ Dashboard——>新建Item——>任务名称:maven-docker:构建一个maven项目——>
~~~ ——>Goals and options填写:clean package -Dmaven.test.skip=true
~~~ ——>只有前面执行成功之后才会执行下面部分。
~~~ # 配置Post Steps
~~~ ——>脚本中用到的仓库和认证的账号需要先在harbor新建好。





### --- 创建dockerfile:centos7.x 10.10.10.12 jenkins服务器中配置
~~~ 创建dockerfile
[root@jenkins ~]# mkdir -pv /var/lib/jenkins/docker-file/maven-docker-test_war
[root@jenkins ~]# vim /var/lib/jenkins/docker-file/maven-docker-test_war/Dockerfile
# Version 1.0
# Base images.
FROM tomcat:8.0.36-alpine
# Author.
MAINTAINER yanqi <yanqi_vip@yeah.net>
# Add war.
ADD maven-docker.war /usr/local/tomcat/webapps/
# Define working directory.
WORKDIR /usr/local/tomcat/bin/
# Define environment variables.
ENV PATH /usr/local/tomcat/bin:$PATH
# Define default command.
CMD ["catalina.sh", "run"]
# Expose ports.
EXPOSE 8080
~~~ # 解释说明
~~~ # 目的:是把新产生的war包增加到tomcat中去
FROM tomcat:8.0.36-alpine // 从官方下载tomcat8.0.36
MAINTAINER yanqi <yanqi_vip@yeah.net> // 作者:作者邮箱
ADD maven-docker-test.war /usr/local/tomcat/webapps/ // 从jenkins本地文件系统拷贝它的war包到/usr/local/tomcat/webapps的目录下;项目名称是maven-docker
ENV PATH /usr/local/tomcat/bin:$PATH // 设置环境变量
CMD ["catalina.sh", "run"] // 最后去执行
EXPOSE 8080 // 端口
二、Post setps.配置shell脚本
### --- 该实验环境yum安装方式修改工作目录后的脚本
~~~ Jenkins机器:编译完成后,build生成一个新版本的镜像,push到远程docker仓库
# Variables
JENKINS_WAR_HOME='/var/lib/jenkins/workspace/maven-docker/target'
DOCKERFILE_HOME='/var/lib/jenkins/docker-file/maven-docker-test_war'
HARBOR_IP='10.10.10.11'
REPOSITORIES='jenkins/maven-docker'
HARBOR_USER='yanqi'
HARBOR_USER_PASSWD='Harbor12345'
HARBOR_USER_EMAIL='yanqi_vip@yeah.net'
# Copy the newest war to docker-file directory.
\cp -f ${JENKINS_WAR_HOME}/easy-springmvc-maven.war ${DOCKERFILE_HOME}/maven-docker.war
# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
sudo docker rmi ${IMAGE_ID}
fi
# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . &>/dev/null
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null
### --- 配置文件说明
JENKINS_WAR_HOME='/var/lib/jenkins/workspace/maven-docker/target' // 定义环境变量:设置工作目录
DOCKERFILE_HOME='/var/lib/jenkins/docker-file/maven-docker-test_war' // dockerfile文件创建,上面已经创建完成。
HARBOR_IP='10.10.10.11' // 定义harbor服务器的地址
REPOSITORIES='jenkins/maven-docker' // 库的名字
HARBOR_USER='yanqi' // harbor仓库的用户名:yanqi
HARBOR_USER_PASSWD='Harbor12345' // Harbor仓库的密码:Harbor12345
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:80 // jenkins主机登录harbor服务器所用到的${HARBOR_USER}:Harbor主机的用户 ${HARBOR_USER_PASSWD}主机的密码 ${HARBOR_IP}:80主机的地址+端口
Login Succeeded //登录成功
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'` // IMAGE_ID,通过awk拿去第三列。作为唯一的标识
sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . &>/dev/null // .标识之前的那个目录
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} &>/dev/null //push的时候也需要端口号
三、Post setps.配置shell脚本
### --- 该实验环境war包安装方式修改工作目录后的脚本(war包部署时所使用的的脚本文件)
~~~ Jenkins机器:编译完成后,build生成一个新版本的镜像,push到远程docker仓库
# Variables
JENKINS_WAR_HOME='/root/.jenkins/workspace/maven-docker-test/target'
DOCKERFILE_HOME='/root/jenkins/docker-file/maven-docker-test_war'
HARBOR_IP='10.10.10.11'
REPOSITORIES='jenkins/maven-docker-test'
HARBOR_USER='yanqi'
HARBOR_USER_PASSWD='Harbor12345'
HARBOR_USER_EMAIL='yanqi_vip@yeah.net'
# Copy the newest war to docker-file directory.
\cp -f ${JENKINS_WAR_HOME}/easy-springmvc-maven.war ${DOCKERFILE_HOME}/maven-docker-test.war
# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
sudo docker rmi ${IMAGE_ID}
fi
# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}/${REPOSITORIES}:${TAG} . &>/dev/null
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv015-jenkins2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」