|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

 

 

posted on   yanqi_vip  阅读(19)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示