mac通过docker一键部署Jenkins

一、前言

程序猿开发任务本来就比较繁锁,如果搭建各种开源的软件还需要搜索这样那样的配置,那基本上两鬓斑白的头发基本上都快脱光了,如何找女朋友呢?难道一直和五姑娘为伴?所以自己当第一个吃螃蟹的人摸索了一些套路,编写一些简易的 shell 脚本帮我们快速的搭建服务器,猿们只要按着套路“一步一步”的操作,基本上都可以快速部署服务,也有《Jenkins自动安装脚本》,大家根据自己的实际情况进行操作。

二、系统配置

mac os:Monterey
mac version:12.4 (21F79)
mac type: MacBook Air (M1, 2020), Apple M1 docker desktop version:v4.10.0
docker version:v20.10.17
docker-compose version: v1.29.2

三、安装步骤

Dockerhub查看镜像地址

# 如果你比较懒可以使用最后的“Jenkins自动安装脚本”,mac电脑通用
https://hub.docker.com/r/jenkins/jenkins/tags

1、一键安装

1.1、下载脚本

https://gitee.com/xiaoyaojiugui/technical/blob/master/docker/foundations/cicd/jenkins

1.2、安装程序

# 跳转到指定文件夹,并执行如下命令:
sh ./jenkins.sh
1.2.1、安装程序详情
---------------函数开始执行---------------
1.1、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/jdk-17]
1.2、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6]
1.3、检查必要软件,跳过此步骤,文件已存在[/Users/jason.zhuo/codes/leisure/doc/technical/docker/foundations/cicd/jenkins/software/jenkins.war] 2.1、执行创建容器操作,跳过此步骤,镜像已存在[jenkins/jenkins:latest]
2.2、执行创建容器操作,创建目录并授权,执行命令:sudo mkdir -p -v /Users/jason.zhuo/data/docker/volumes/jenkins/{jenkins-home,conf} && sudo chown -R jason.zhuo /Users/jason.zhuo/data/docker/volumes/jenkins
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/conf'
2.3、执行创建容器操作,执行命令:docker run -d -p 39090:8080 -p 50000:50000 -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home --name jenkins jenkins/jenkins:latest 2.4.1、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:41 AM CST <--
2.4.2、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:51 AM CST <--
2.5.1、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml]
2.5.2、执行创建容器操作,查看配置文件,执行命令:cat /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml | grep 'url' 2.5.3、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json]
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && sed -i "" 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json 2.5.5、执行创建容器操作,拷贝配置[/etc/profile]到本地并配置环境变量,执行命令:sudo docker cp $(docker ps -a | grep jenkins | awk '{print $1}'):/etc/profile /Users/jason.zhuo/data/docker/volumes/jenkins/conf/
2.6.1、执行重建容器操作,其容器为[jenkins/jenkins:latest],执行命令: docker run -d -p 39090:8080 -p 50000:50000 --privileged=true -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/profile:/etc/profile -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/.bashrc:/root/.bashrc -v /Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6:/usr/local/apps/apache-maven-3.8.6 -v /Users/jason.zhuo/data/docker/apps/jdk-17:/usr/local/apps/jdk-17 --name jenkins jenkins/jenkins:latest
2.6.2、复制Jenkins的最新war包到指定目录,执行命令:docker cp ./software/jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
2.7.1、查看容器状态,执行命令:docker inspect --format='{{.State.Status}}' jenkins
2.7.2、查看容器状态,[exited],启动命令:docker start jenkins
jenkins
2.7.3、查看容器详情,执行命令:docker ps | grep jenkins/jenkins:latest 3.1、其他待执行命令,登录容器其命令为:docker exec -it -u root jenkins /bin/bash
3.2、其他待执行命令,复制最新war包其命令为:docker cp ./jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
---------------函数执行完毕--------------- 注意:此处休息10秒,是因为刚启动该文件没有初始完成(hudson.model.UpdateCenter.xml)
1.2.2、下载必要软件详情
1、检查目标目录,待执行脚本的路径为[/Users/jason.zhuo/code/leisure/doc/technical/docker/foundations/cicd/software],包括如下文件:
2、检查目标目录,跳过此步骤,文件夹已存在[/Users/jason.zhuo/data/docker/apps] 3、检查Maven软件,其文件名[apache-maven-3.8.6],压缩包名[apache-maven-3.8.6-bin.tar.gz]
4、检查Maven软件,解压压缩包,执行命令:tar -zxf apache-maven-3.8.6-bin.tar.gz
5、检查Maven软件,拷贝到指定目录,执行命令:sudo cp -r apache-maven-3.8.6 /Users/jason.zhuo/data/docker/apps 6、检查JDK软件,其文件名[jdk-17],压缩包[jdk-17_linux-aarch64_bin.tar.gz]
7、检查JDK软件,解压压缩包,执行命令:tar -zxf jdk-17_linux-aarch64_bin.tar.gz
8、检查JDK软件,重命名文件,执行命令:sudo mv jdk-17.0.4.1 jdk-17
9、检查JDK软件,拷贝到指定目录,执行命令:sudo cp -r jdk-17 /Users/jason.zhuo/data/docker/apps 10、查看目标目录内容,执行命令:ls /Users/jason.zhuo/data/docker/apps

1.3、启动成功后,即可正常访问

http://localhost:39090/login

1.4、查看登录密码

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

1.5、插件自定义安装

注意:此处不安装任何插件,因为Jenkins的官方插件下载地址速度非常慢。

1、获取密码,登录即可;
2、“选择插件来安装”而非社区推荐的插件 --> 选择“无” --> 然后点击“安装”即可;
3、创建第一个管理员账户,只有创建了新账户并成功登录后,才能执行如下《步骤1.6》



1.6、修改国内插件下载源

注意:执行完命令后请重启!执行完命令后请重启!执行完命令后请重启!

1、Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址;
2、手动更新配置,复制《1.2.1 安装程序详情》中的《2.5.3命令》,在终端执行即可;
3、执行完以下命令,需要重启 jenkins 才能生效; # 解决打开登录界面时一直在转圈圈,程序自动更新 update-center.json
sed -i "" 's/https:\/\/updates.jenkins.io\/update-center.json/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins\/updates\/update-center.json/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-data/hudson.model.UpdateCenter.xml # 替换成国内插件地址,手动更新 default.json
# 其实有很多朋友会问,为什么更新 default.json 不放在 shell 脚本中操作呢?之前试过在 shell 脚本中更新,但只要没有创建第一个管理员账户,那 default.json 配置就会被还原成官方配置,请执行命令;
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && \
sed -i "" 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json

1.7、容器内下载最新版本Jenkins

1.7.1、以root用户登录容器
1、以root用户登录容器
docker exec -it -u root jenkins /bin/bash 2、跳转到指定目录
cd /usr/share/jenkins 3、让环境变量生效
source /etc/profile
1.7.2、在容器中下载jenkins的最新war包
# 1、如果容器内没有wget命令,则安装应用:
sudo apt-get update && apt-get install wget # 2、下载最新的镜像
wget http://mirrors.jenkins.io/war/latest/jenkins.war
1.7.3、新旧war包替换
# 1、移除旧war包
rm -rf jenkins.war # 2、重命令新war包
mv jenkins.war.1 jenkins.war
1.7.4、退出容器,并重启应用
docker restart jenkins

1.8、手动安装社区推荐的插件

注意:如果安装插件时失败,且有提示要更新 Jenkins 版本,操作请按《步骤1.7》

Jenkins -> Manage Jenkins -> Manage Plugins,点击Available

序号 插件 是否安装
1 Folders yes
2 OWASP Markup Formatter
3 Build Timeout yes
4 Credentials Binding
5 Timestamper yes
6 Workspace Cleanup yes
7 Ant yes
8 Maven Integration yes
9 GitHub Branch Source yes
10 Git yes
11 Pipeline yes
12 Pipeline: Groovy yes
13 Pipeline: Stage View yes
14 Pipeline: Declarative yes
15 Pipeline: Basic Steps yes
16 SSH Build Agents yes
17 Publish Over SSH yes
18 Matrix Authorization Strategy
19 Parameterized Trigger yes
20 Email Extension yes
21 JUnit yes
22 Localization: Chinese (Simplified) yes

1.9、解决问题

  • 打开登录界面时,一直停留在“Please wait while Jenkins is restarting ...”

    解决方案:请参考《步骤1.6》

  • Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址

    解决方案:请参考《步骤1.6》

  • Docker 中的 Jenkins 重启时,“/etc/profile”环境变量失效

    解决方案:

    1.在/root/.bashrc文件最下面添加如下指令:source /etc/profile

    2.保存文件,然后执行:source /root/.bashrc

1.10、卸载程序

备注:此步骤请慎用,执行脚本时后面加任意参数即可卸载

# 参数1:即删除容器
sh ./jenkins.sh del1 # 参数1:删除容器和文件夹
sh ./jenkins.sh delete # 参数2:即删除镜像,删除后需要重新下载镜像才能初始化容器
sh ./jenkins.sh del1 del2

1.10.1、卸载程序详情

---------------函数开始执行---------------
1.1、执行容器删除操作,跳过此步骤,检查必要软件
2.1、执行容器删除操作,跳过此步骤,删除原镜像[jenkins/jenkins:latest]
2.2、执行容器删除操作,跳过此步骤,创建目录[/Users/jason.zhuo/data/docker/volumes/jenkins]
2.3、执行容器删除操作,跳过此步骤,第一次初始化容器[jenkins]
2.4、执行容器删除操作,跳过此步骤,休眠 120 秒
2.5、执行容器删除操作,跳过此步骤,修改配置文件
2.6、执行容器删除操作,执行命令:docker stop jenkins && docker rm jenkins
2.6、执行容器删除操作,成功删除容器[jenkins]
2.7、执行容器删除操作,跳过此步骤,第二次初始化容器[jenkins]
2.8、执行容器删除操作,跳过此步骤,检查容器状态
2.9.1、执行容器删除操作,删除文件夹,执行命令:sudo rm -rf /Users/jason.zhuo/data/docker/volumes/jenkins
2.9.2、执行容器删除操作,成功删除文件夹[/Users/jason.zhuo/data/docker/volumes/jenkins]
---------------函数执行完毕---------------

四、总结

自动化脚本安装完成后,本地的 Jenkins 基本上就可以随便玩,文章如有不对之处请留言,会及时修正,谢谢阅读!!

五、后记

所有文章均为本人原创,本人写作的目的就是想帮助对技术有需要的人,所以欢迎同行转载本站文章,但是,希望您注明来源,并留下原文链接地址,这是对文章作者的尊重,也是对知识的尊重。

mac通过docker一键部署Jenkins的更多相关文章

  1. mac通过docker一键部署MySQL8

    目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...

  2. mac通过docker一键部署Nexus3

    目录 mac通过docker一键部署Nexus3 一.前言 二.系统配置 三.安装步骤 1.Dockerhub查看镜像地址 2.一键安装 2.1.克隆脚本 2.2.安装程序 2.2.1.程序安装详情 ...

  3. Mac通过docker一键部署airflow

    目录 Airflow部署及使用 1.Dockerhub查看镜像地址 2.拉取docker镜像 3.在宿主机创建外挂文件夹 4.创建docker容器 5.重新创建docker容器 5.1.查看airfl ...

  4. Docker一键部署Hadoop心得(一)

    最近一直在折腾使用docker一键部署全分布式hadoop集群,虽然一键部署的脚本写好了并且可以成功运行出各个节点,但在运行一个wordcount实例时出现了错误,错误如下: java.io.IOEx ...

  5. 使用Docker 一键部署 LNMP+Redis 环境

    使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  6. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  7. Helm Chart 一键部署 Jenkins

    Jenkins Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.目前提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. Jenki ...

  8. RabbitMQ集群 Docker一键部署

    以下内容来自网络转载 步骤1. 安装docker 以centos7为例,https://docs.docker.com/engine/installation/linux/centos/ 步骤2. 创 ...

  9. Docker:docker安装部署jenkins

    Docker安装步骤请转到:https://www.cnblogs.com/nhdlb/p/11262527.html 查看docker的jenkins镜像版本 #查看jenkins版本命令 dock ...

随机推荐

  1. 不是第七代的 Win 7

    贡献者:历史上的今天 Windows 7 是由微软公司(Microsoft)2009 年 10 月 22 日发布的桌面端操作系统,它影响了每个行业的方方面面,以至于很多人仍然在日常生活和工作中使用它. ...

  2. 基于二进制安装Cloudera Manager集群

    一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...

  3. LyScript 获取上一条与下一条指令

    LyScript 插件默认并没有提供上一条与下一条汇编指令的获取功能,当然你可以使用LyScriptTools工具包直接调用内置命令得到,不过这种方式显然在效率上并不理想,我们需要在LyScript插 ...

  4. DZY Loves Math II

    简要题面 对于正整数 \(S, n\),求满足如下条件的素数数列 \((p_1,p_2,\cdots,p_k)\)(\(k\) 为任意正整数) 的个数: \(p_1\le p_2\le\cdots\l ...

  5. reduce累加实现

    与map端的模式类似,map端要重写Mapper方法,reduce端也要重写Reduce方法,这里有一个泛型,我们先看参数类型 分别对应输入keyin,valuein,keyout,valueout. ...

  6. Kafka与Spark案例实践

    1.概述 Kafka系统的灵活多变,让它拥有丰富的拓展性,可以与第三方套件很方便的对接.例如,实时计算引擎Spark.接下来通过一个完整案例,运用Kafka和Spark来合理完成. 2.内容 2.1 ...

  7. 使用flex弹性布局代替传统浮动布局来为微信小程序写自适应页面

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_109 我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + p ...

  8. python3.7爬虫:使用Selenium带Cookie登录并且模拟进行表单上传文件

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_142 前文再续,书接上一回,之前一篇文章我们尝试用百度api智能识别在线验证码进行模拟登录:Python3.7爬虫:实时api(百 ...

  9. Docker搭建STF私有移动测试云平台

    一. STF介绍 Smartphone Test Farm(简称STF)是一个web应用程序,主要用于从指定的浏览器中远程调试智能手机.智能手表等,可远程调试超过160多台设备.STF可以便捷的管理移 ...

  10. MySQL数据库的创建和基本的查询语句

    数据库的定义 数据库是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库 分类 非结构化数据: 数据相对来说没有固定的特点 半结构化数据: 数据之间有着相同的存储结构 属性 值 每一条数 ...