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. 01 开发App真机调试问题

    逍遥安卓模拟器 :https://juejin.cn/post/7062922018710093831 HBuilderX真机调试插上手机却提示"未检测到手机或浏览器"的问题:ht ...

  2. 输出以二叉树表示的算术表达式(严6.51)--------西工大noj

    题解 这道题目说的很诡异,其实没有什么把括号补上....仅仅是先序读入,然后中序输出就行了 代码 #include <stdio.h> #include <stdlib.h> ...

  3. ABC251 题解

    典中典比赛 . 目录 A - Six Characters B - At Most 3 (Judge ver.) C - Poem Online Judge D - At Most 3 (Contes ...

  4. 内网渗透之Windows认证(二)

    title: 内网渗透之Windows认证(二) categories: 内网渗透 id: 6 key: 域渗透基础 description: Windows认证协议 abbrlink: d6b7 d ...

  5. 万答#5,binlog解析出来的日志为何无法恢复

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 问题描述 问题来自一位群友,简单说就是用 mysqlbinlog 工具读取 bi ...

  6. java学习第一天.day03

    运行程序数据存储 ASCII Unicode(万国码) A在码表的顺序是65,a在码表的顺序是97,1代表49 变量 定义一个变量声明数据类型是开辟一个空间存储数据,java对数据的定义比较严格,比如 ...

  7. Java开发学习(二十六)----SpringMVC返回响应结果

    SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...

  8. spring boot 中英文官方文档

    中文文档:http://oopsguy.com/documents/springboot-docs/1.5.4/index.html#boot-features 英文官方文档:https://docs ...

  9. 2-1 走进selenium新世界

    走进Selenium新世界 浏览器 Firefox Setup 35.0.1 安装完成后设置菜单栏 关闭浏览器自动更新 插件配置(必备武器) FireBug Firebug是firefox下的一个扩展 ...

  10. C#基础_理解类

    构造函数主要是用来创建对象时为对象赋初值来初始化对象.总与new运算符一起使用在创建对象的语句中 .A a=new A(); 构造函数具有和类一样的名称:但它是一个函数具有函数的所有特性,同一个类里面 ...