基于Docker+Jenkins实现自动化部署

Posted niunafei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Docker+Jenkins实现自动化部署相关的知识,希望对你有一定的参考价值。

Jenkins是一个基于java开发的开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

jenkins官网:https://jenkins.io

jenkins下载地址:https://jenkins.io/download/

技术图片

 请检测是否安装docker,如果没有安装或想提速下载请走这里---->>> Linux Centos7(Mac) 安装Docker教程

准备:

这里搭建测试整个流程的时候使用的是jenkins+gitee+springboot项目

1、登录码云https://gitee.com/ 创建自己的代码仓库。

2、创建springboot项目上传到仓库。

一、下载Jenkins镜像,安装启动

有个很残酷的消息在docker的镜像仓库中Jenkins的官方镜像停止维护了,并且推荐使用jenkins/jenkins:lts镜像,所有我这里使用的是Jenkins社区提供维护的镜像

技术图片

 来吧~~~咱们下面就开始

1、创建docker挂在目录,目的是将docker中Jenkins的持久化数据写到本地,否则每次重启jenkins都会重置

mkdir -p /root/jenkins

2、下载Jenkins镜像,并启动容器

这个过程可以分成两步,也可以直接运行第二步,docker run 会先下载镜像在构建容器并启动容器:

第一步下载镜像(点我查看需要镜像)  

docker pull  jenkins/jenkins

执行docker run,

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /root/jenkins:/var/jenkins_home jenkins/jenkins

 参数详情哈~~ 

-d :指定容器后台运行

--name:我给容器起个名字叫jenkins

-p: 端口映射格式(本地端口:容器端口),8080是访问端口,50000用户其他机器上设置了一个或多个基于JNLP的Jenkins代理程序链接使用,这个端口可以不要滴(-p 50000:50000参数可以去掉)

-v:物理卷映射,就是本地与容器共享磁盘,格式(本地目录:容器目录)

jenkins/jenkins  镜像存储名称或者id

3、查看初始化秘钥的两种方式

第一、执行以下命令查看日志,这里有个重点,注意敲黑板了:日志中有个字符串入下图,第一次登陆需要使用的秘钥

 docker logs jenkins

技术图片

第二、如果发现日志没有哈哈哈,幸运眷顾你,不是第一次启动吧,那你来这里呀~,看看图片是不是跟日志上的一致,嘿嘿~

cat /root/jenkins/secrets/initialAdminPassword

技术图片

 二、登录初始化Jenkins

1、访问方式 http://127.0.0.1:8080 ,格式: http://IP或域名:端口,第一次进入初始化加载页面稍慢3-8分钟,需要大家注意下哈~,莫着急。

2、访问之后会出现下面的页面,将日志中的秘钥复制进去点击继续

技术图片

 3、点击继续后进入小等待、点击一下安装社区推荐插件(一下就好),哈哈哈~恭喜你进入一个漫长的等待,因为需要取社区下载插件并安装,过程如下面的图片。

技术图片 技术图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

狂踩大小坑

1、执行docker run 命令,爆出异常 touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log‘: Permission denied

太坑了我选的是root目录下,所以原因是映射文件的权限不足,那就给权限呗。

解决方式:

 chmod 777 /root/jenkins

 

以上是关于基于Docker+Jenkins实现自动化部署的主要内容,如果未能解决你的问题,请参考以下文章

基于Docker+Jenkins实现自动化部署

基于Jenkins,docker实现自动化部署(持续交付)

node项目自动化部署--基于Jenkins,Docker,Github自动化部署

使用DockerNginx和Jenkins实现前端自动化部署

自动化代码审查平台: 基于Docker Compose整合Jenkins + SonarQube

基于jenkins+docker+git 持续化自动部署项目(详细版一));