使用Jenkins发布Docke
需要准备的,docker,jenkins,Harbor
docker安装
安装依赖:
# yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker软件包源:
# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE:
# yum install docker-ce -y
配置加速器:
# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io
 
启动并开机启动:
# systemctl start docker
# systemctl enable docker
#--------------------------------------------------------------------------
安装Jenkins(使用docker安装)
#dockerfile,内容如下
# 设置基础镜像
FROM jenkins/jenkins:lts
 
# 下面是一些创建者的基本信息
 
# 设置环境变量,所有操作都是非交互式的
#ENV DEBIAN_FRONTEND noninteractive
 
#ENV MAVEN_HOME /opt/apache-maven-3.3.9
#ENV PATH $PATH:/opt/apache-maven-3.3.9/bin
#设置为root用户运行
USER root
 
#安装ansible,rsync,创建密钥目录
RUN echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" >> /etc/apt/sources.list \
&&  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 \
&& apt-get update \
&& apt-get -y install ansible rsync \
&& rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
USER jenkins
#添加第三方工具JDK,mamven,密钥,opt.tar.gz中已加入了JDK,mamven,ADD,解压后即用,如果觉得这样导致镜像容量过大,可以去掉,用-v挂载
ADD opt.tar.gz /
COPY id_rsa /var/jenkins_home/.ssh
#--------------------------------------------------------------------------
#构建镜像
docker build -t ck-5 ck:v7 .
 
运行容器,以自己的需要修改,
#目录说明
ansible             ansible配置
config              Jenkins发布时对应的应用配置
Dockerfile        字面意思
jenkins.tar.gz    jenkins工作目录配置
 
#容器运行命令,使用
docker run -d -p 9995:8080 \
-v /data/jenkins:/var/jenkins_home \
-v /data/jenkins-Docker/ansible:/etc/ansible \
-v /data/jenkins-Docker/config:/data/config \
-v /data/jenkins-Docker/repository:/var/jenkins_home/.m2/repository \
--name ck-5 ck:v7
 
#不需要挂载这些配置的只需要如下执行
docker run -d -p 9995:8080 --name ck-5 ck:v7     #运行Jenkins容器
 
Jenkins配置全局工具配置
 
主页面 -> 系统管理 -> 全局工具配置
指定JDK、Maven路径:
 
 
 
 
 
运行后进入Jenkins界面,安卓插件
SSH:用于SSH远程Docker主机执行Shell命令
 
Jenkins安装到此完成
#--------------------------------------------------------------------------
Harbor安装
 
先安装docker-compose,安装地址:https://github.com/docker/compose/releases/
#执行
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
 
docker-composezan 安装完成
 
 
# cd /usr/local/src/
# tar zxf harbor-online-installer-v1.2.0.tgz -C /usr/local/
# cd /usr/local/harbor/
修改配置文件
配置文件为:/usr/local/harbor/harbor.cfg
# vim /usr/local/harbor/harbor.cfg
hostname = 192.168.1.17 (这里写你的域名或者IP,先不要去管其他配置)
执行安装脚本:
# /usr/local/harbor/install.sh
然后会有很长一大段
。。。
。。。
。。。
好了,不信你看看,docker ps -a
使用 docker-compose来管理Harbor,
# cd /usr/local/harbor/      #注意要先进去此目录哦
# docker-compose ps
Harbor的启动和停止
启动Harbor
# docker-compose start
停止Harbor
# docker-comose stop
重启Harbor
# docker-compose restart
访问测试
在浏览器输入 192.168.1.17,因为我配置的域名为192.168.1.17。请大家根据自己的配置情况输入访问的域名;
默认账号密码: admin / Harbor12345 登录后修改密码
 
默认安装后是http协议,docker在访问库的时候默认是使用https协议,所以要先修改
[root@localhost dockerfile]# more /etc/docker/daemon.json
{"insecure-registries":["192.168.1.17"]}
加入这个,加上后重启docker ,命令:systemctl restart docker
 
需要访问Harbor私库的机器需要先用
docker login 192.168.1.17(私库地址) 登录,那个用户下使用,就用那个用户界面下去操作登录
如果是用Jenkins 执行的 重启下Jenkins    重启命令:service jenkins restart
 
docker发布
首先先构建一个Tomcat基础镜像,JDK安装在宿主机上,容器以挂载形式使用
JDK安装
# tar zxvf jdk-8u45-linux-x64.tar.gz
# mv jdk-8u45-linux-x64 /usr/local/jdk1.8
 
Tomcat基础镜像Dockerfile:
# cat Dockerfile
FROM centos:7
 
ENV VERSION=8.5.32
ENV JAVA_HOME /usr/local/jdk
 
RUN yum install wget -y
 
RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
    tar zxf apache-tomcat-${VERSION}.tar.gz && \
    mv apache-tomcat-${VERSION} /usr/local/tomcat && \
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
    mkdir /usr/local/tomcat/webapps/ROOT
 
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
 
构建镜像并上传到Harbor
docker build -t  harbor.yedsfe.cn/test/tomcat-web .     #构建镜像,仓库地址/镜像名称
docker push harbor.yedsfe.cn/test/tomcat-web            #上传镜像
 
 
接下来就是Jenkins的job配置了:
创建一个新的 Maven 项目
添加字符参数
添加仓库地址,我这是SVN
 
构建war包
增加个执行shell步骤
 
#docker仓库地址和镜像名称:版本
REPOSITORY=harbor.yijhjge.cn/test/mjs-web:${Tag}
echo '================开始构建镜像================'
cat > Dockerfile << EOF
FROM harbor.yinmishe.cn/test/tomcat-web:latest
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY $module/target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
echo '================开始推送镜像================'
docker push $REPOSITORY
echo '================删除ci机器镜像=============='
docker image rm $REPOSITORY |true
接着部署到发布机器 
 
REPOSITORY=harbor.yddfddwee.cn/test/mjs-web:${Tag}
# 部署
docker rm -f blog-solo |true
docker image rm $REPOSITORY |true
docker container run -d --name blog-solo -v /usr/local/jdk:/usr/local/jdk -p 88:8080 $REPOSITORY
 
保存后,就配置完成了
 
总结下过程,虽然说写的很多但其实发布过程很简单,把Jenkins, Docker ,Harbor仓库搭建好
先在构建个Tomcat基础镜像传入Harbor仓库
Jenkins拉取svn或者git仓库中的代码,使用maven打包出war包
增加,执行shell,拉取Harbor中的Tomcat基础镜像,替换war包后,构建出本次项目镜像,并上传到harbor仓库,可以在镜像命名的时候使用Tag区分
使用ssh插件,在远程需发布机器上,使用本次服务镜像,运行容器
这样就完成了 
参考资料:

Jenkins+Harbor+Docker发布的更多相关文章

  1. jenkins构建docker镜像上传到harbor并发布到kubernetes

    很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...

  2. 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...

  3. Jenkins集成Docker镜像实现自动发布

    1. 思路&流程 Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:Jenkins 拉去远端源码 -- gitl实现应用打包 -- jenk ...

  4. jenkins+maven+docker集成java发布(二)#远程发布

    jenkins+maven+docker集成java发布(一)中写了在Jenkins服务器自动部署业务,那需要将java项目部署到其他服务器怎么操作 这里需要依赖插件Publish Over SSH ...

  5. jenkins+maven+docker集成java发布(一)自动发布

    JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...

  6. 使用Jenkins与Docker持续集成与发布NetCore项目(实操篇)

    使用Jenkins与Docker持续集成与发布NetCore项目(教程一) 原文地址:https://www.cnblogs.com/Jackyye/p/12588182.html 基本环境 该教程的 ...

  7. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  8. Jenkins 基于 Docker git JAVA CI/CD

    准备两台机器 192.168.31.200 centos7  docker harbor git 192.168.31.201 centos7  docker jenkins maven git Ha ...

  9. Jenkins指定tag发布到k8s环境

    Jenkins指定tag发布到k8s环境 1.Jenkins配置一个Pipeline 工程 首先要安装插件:https://www.cnblogs.com/Dev0ps/p/9125232.html ...

随机推荐

  1. tornado实现高并发爬虫

    from pyquery import PyQuery as pq from tornado import ioloop, gen, httpclient, queues from urllib.pa ...

  2. c++ 指定目录下的文件遍历

    要实现指定目录下文件的遍历需要执行一下的部分: 第一步获取当前路径的名字:(MAX_PATH是在windows定义的所有的路径名字不超过其,调用该函数会使得得到当前的目录) #include < ...

  3. 11jsp

    1.JSP 1. 指令 作用:用于配置JSP页面,导入资源文件 格式:             <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> 分类:        ...

  4. Zookeeper常见问题FAQ

    Zookeeper 常见问题FAQ 1.Zookeeper设置权限之坑 大家都知道,zookeeper创建节点默认的权限为:world:anyone:crdwa 设置权限时,当不小心设置成只读r,那么 ...

  5. 第07课:【实战】调试Redis准备工作

    7.1 Redis源码下载与编译 Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习. 编译成功后,会在src目录下生成多个可执行程序,其中redis-ser ...

  6. iptables设置

    一,安装iptables yum -y install iptables-services iptables-devel 二,查看规则 iptables -nL --line-number 三,清空规 ...

  7. Android编程使用httpHelper不执行错误-20171017

    解决方法:将显示等代码(例如setText()和setAdapter()等方法)从主函数onCreate()中移到httpHelper.get()函数中:   原因:有可能是主线程运行的较快,而连接服 ...

  8. Linux 性能优化笔记:软中断(转载)

    进程的不可中断状态是系统的一种保护机制,可以保证硬件的交互过程不被意外打断. 所以,短时间的不可中断状态是很正常的. 但是,当进程长时间都处于不可中断状态时,你就得当心了.这时,你可以使用 dstat ...

  9. 网络编程与socket

    .互联网协议 互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织. OSI七层协议: - 应用层 - 表示层 - 会话层 - 传输层 - 网络层 - 数据链路层 - 物理连接层 学 ...

  10. base64 转 Image

    /// <summary> /// base64 转 Image /// </summary> /// <param name="base64"> ...