Docker+Jenkinsg+Springboot流水式构建-实用篇

最近无聊想自己玩一玩devpos,方便以后接私活,或者学习,O(∩_∩)O,

以后直接安装这篇文档,傻瓜式安装,哈哈

废话不多说,直接进入实战,完成简单的搭建

1.初始化CentOS环境

1.1 关闭防火墙

复制代码
sudo systemctl stop firewalld

1.2 禁用 firewalld 服务 在启动时自动运行

复制代码
sudo systemctl disable firewalld

1.3 验证 firewalld 服务状态

复制代码
sudo systemctl status firewalld

如果 firewalld 已经停止并且被禁用,你应该会看到类似以下的输出:

复制代码
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

测试以下网络环境

复制代码
ping aliyun.com

安装完毕后,如果需要开启防火墙输入以下命令

复制代码
启动防火墙
sudo systemctl start firewalld
确保 firewalld 在系统启动时自动运行
sudo systemctl enable firewalld

2.Docker安装

docker安装要求系统内核高于3.10

2.1查看内核

复制代码
uname -r

2.2更新yum包

复制代码
yum -y update

或者

复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2

如果执行报:

复制代码
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

原因是:

由于 yum 无法访问 CentOS 的镜像列表,导致无法获取软件包。这可能是由于网络问题、DNS 解析失败或者 CentOS 7 的官方镜像列表已经不再维护(因为 CentOS 7 的生命周期已经结束)

解决方式:

更新镜像源,修改/etc/yum.repos.d/CentOS-Base.repo

复制代码
sudo vi /etc/yum.repos.d/CentOS-Base.repo

将文件内容替换为阿里云的:

在进行任何修改之前,建议先备份原始的yum源配置文件,以便在需要时能够恢复。yum源配置文件通常位于/etc/yum.repos.d/目录下,文件名为CentOS-Base.repo(根据具体版本和发行版可能有所不同)。

bash复制代码

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载阿里云的yum源配置文件

有多种方法可以下载阿里云的yum源配置文件,常用的有wgetcurl命令。以下是一个使用curl命令下载CentOS 7阿里云源配置文件的示例:

bash复制代码

复制代码
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

注意 :阿里云提供的yum源配置文件版本可能随时间更新,因此建议直接访问阿里云官方镜像站点(如http://mirrors.aliyun.com/repo/)查找最新版本。

清理yum缓存,并生成新的缓存

复制代码
sudo yum clean all

sudo yum makecache

yum clean all命令会清除所有已下载的包和头文件缓存,而yum makecache命令则会重新生成缓存。

然后 验证 yum源是否更换成功 可以试试下载docker

复制代码
sudo yum install docker-ce docker-ce-cli containerd.io -y

2.3 正式安装Docker

复制代码
sudo yum remove docker

2.4 安装软件包

复制代码
sudo yum install -y yum-utils

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.5 下载阿里云仓库

复制代码
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.6 下载docker

复制代码
sudo yum install docker-ce docker-ce-cli containerd.io -y

2.7 启动docker

复制代码
systemctl start docker

2.8 设置后台开机启动

复制代码
sudo systemctl enable docker

2.9 验证docker服务状态

复制代码
sudo systemctl status docker

如果 Docker 已经启动并且被启用,你应该会看到类似以下的输出:

● docker.service - Docker Application Container Engine

Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)

Active: active (running) since ...

2.9.1 检查 Docker 版本

复制代码
docker --version

2.9.2 配置docker加速镜像

2.9.2.1 创建一个/etc/docker 目录

复制代码
sudo mkdir -p /etc/docker

2.9.2.2 创建一个daemon.json的加速文件

复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF

2.9.2.3 挂载到docker下

复制代码
sudo systemctl daemon-reload

2.9.2.4 重启docker

复制代码
sudo systemctl restart docker

问题:

docker无法启动

报 Job for docker.service failed because the control process exited with error code.

查看docker日志

systemctl status docker.service

一般都是 daemon.json 问题。

试试拉取 jenkins镜像

docker pull jenkins/jenkins

如果出现了

Using default tag: latest

Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
拉取不成功是应为国内的镜像加速基本都被墙了,无法访问。需要寻找网友搭建的镜像加速。

例如:我找到了一个 https://dockerpull.org

详情请参考:https://dockerpull.org/

修改文件 /etc/docker/daemon.json 文件

{"registry-mirrors": ["https://dockerpull.org"]}
#重载systemd管理守护进程配置文件

sudo systemctl daemon-reload

#重启 Docker 服务

sudo systemctl restart docker

或者 在docker pull 时加入加速镜像网址

例如 :docker pull dockerpull.org/jenkins/jenkin

加速镜像参考:

关于Docker官方镜像仓库被墙的一些解决办法 - 我不是矿神

3. 安装docker管理面板【DPanel 】

DPanel 有两个版本,一个是标准版本,还有个 Lite 版。其中 Lite 版本中,不包含域名转发功能。即容器内不会安装 nginx 及 acme.sh 等相关组件。

Lite 版如果需要域名转发,需要借助外部工具,例如 NginxProxyManager、Lucky、宝塔、Nginx 等

本文采用的是标准版 dpanel/dpanel:latest

如果你下载不了,可以使用国内镜像:

registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest

需要创建挂载目录

新建文件夹 dpanel 和 子目录

mkdir -p /volume1/docker/dpanel/data
进入 dpanel 目录

cd /volume1/docker/dpanel
运行容器

docker run -d

--restart unless-stopped

--name dpanel

-p 8807:8080

-v /var/run/docker.sock:/var/run/docker.sock

-v $(pwd)/data:/dpanel

-e APP_NAME=dpanel

registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:latest

APP_NAME:dpanel :APP_NAME 请保持与 container_name 一致

安装完成后,在浏览器中输入 http://IPxx.xx.x:8807 就能看到登录界面

可以参考以下文档,都是中文的

donknap/dpanel: docker可视化管理面板

地址:https://github.com/donknap/dpanel

DPanel 可视化 Docker 管理面板

地址:https://dpanel.cc/#/

Docker

地址:https://dpanel.cc/#/zh-cn/install/docker

4.安装Jenkins

4.1 创建jenkins挂载目录文件夹/volume1/docker/jenkins

复制代码
mkdir -p /volume1/docker/jenkins

4.2 授权目录,给/volume1/docker/jenkins 权限

复制代码
chmod 777 /volume1/docker/jenkins

4.3 安装maven

处理maven安装问题

因为我们要部署的是SpringBoot,所以需要准备JDK和Maven环境

直接输入命令下载:

复制代码
wget https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

创建一个maven文件夹

复制代码
mkdir -p /volume1/docker/maven

然后使用命令进行解压,到对应文件夹下【-C /volume1/docker/maven】

复制代码
tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /volume1/docker/maven

配置maven环境

  1. 到maven对应的目录下设置setting文件,例如我的在 /volume1/docker/maven 下

    复制代码
    cd /volume1/docker/maven/apache-maven-3.8.8
  2. 编辑setting文件

    vim settings.xml

  3. 将原来的mirror删除掉,按i进入编辑

    加入新的mirror 和 localRepository

    xml 复制代码
     <localRepository>/volume1/docker/maven/repository</localRepository>
     
     <mirror> 
         <id>alimaven</id> 
         <name>aliyun maven</name> 
         <url>https://maven.aliyun.com/nexus/content/groups/public/</url> 
         <mirrorOf>central</mirrorOf> 
     </mirror>

    mirror是配置远程仓库:我们选aliyun 的仓库

    localRepository 是配置本地仓库 :我们选择本地对应的目录下

  4. 创建一个仓库文件夹

    复制代码
    mkdir -p /volume1/docker/maven/repository

    注意这里的仓库文件夹需要与我们配置的localRepository路径一致,不然找不到本地的maven仓

  5. 配置环境变量

    打开环境变量文件:按i编辑,进入到最后一行进行编辑

    复制代码
    vim /etc/profile

    添加配置信息:MAVEN_HOME 配置咱们的maven路径

    复制代码
    export MAVEN_HOME=/volume1/docker/maven/apache-maven-3.8.8
    export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
  6. 从新载入配置文件

    source /etc/profile

    测试maven安装结果

    复制代码
    mvn -v

    出现 以下内容即安装成功

    Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)

    Maven home: /volume1/docker/maven/apache-maven-3.8.8

    Java version: 1.8.0_332, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre

4.4 运行启动Jenkins命令:

复制代码
docker run -u root -d --restart=always --privileged=true \
  -p 10240:8080 -p 10241:50000 \
  -v /volume1/docker/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /volume1/docker/maven:/usr/local/maven \
  -v "$HOME":/home \
  --name jenkins jenkins/jenkins:lts

设置容器内的用户为 root。这意味着容器将以超级用户权限运行。

-d:以后台模式(即作为后台进程)启动容器。

--restart=always:

设置容器在宿主机重启后总是重新启动。

--privileged=true:

以特权模式运行容器,这给予了容器更多的权限,比如可以直接访问 Docker API。特权模式绕过了某些安全限制,因此只应在必要时使用。

-p 10240:8080:

映射容器的端口 8080 到宿主机的端口 10240。这意味着你可以通过访问宿主机的 10240 端口来连接到容器内的 Jenkins 服务。

-p 10241:50000:

类似地,映射容器的端口 50000 到宿主机的端口 10241。这通常是用于 Jenkins 的代理或者其他需要监听外部端口的服务。

-v //volume1/docker/jenkins :/var/jenkins_home:

将宿主机上的 /home/jenkins/workspace/ 目录挂载到容器内的 /var/jenkins_x 目录。这使得 Jenkins 可以在宿主机上存储工作空间数据。

-v /var/run/docker.sock:/var/run/docker.sock:

将 Docker 的 Unix socket 文件从宿主机挂载到容器内,使得容器内的 Jenkins 可以管理宿主机上的 Docker 服务。

-v /usr/bin/docker:/usr/bin/docker:

将宿主机上的 /usr/bin/docker 文件挂载到容器内的相同位置。虽然在特权模式下,容器内的 Docker 客户端可以连接到宿主机的 Docker 引擎,但这个选项可能是为了确保 Jenkins 能够直接访问 Docker 客户端。

-v /volume1/docker/maven:/usr/local/maven:

将宿主机上的 Maven 安装目录挂载到容器内的 /usr/local/maven 目录,这样容器内的 Jenkins 可以使用宿主机上的 Maven 版本。

-v "$HOME":/home:

将宿主机用户的主目录挂载到容器内的 /home 目录。这使得 Jenkins 可以访问宿主机用户的主目录下的文件。

--name jenkins:

给容器命名,便于后续管理。

jenkins/jenkins:lts:

4.5 Jenkins配置

可以参考以下博客

Jenkins+Docker+Gitee自动化项目部署上线

Docker+jenkins+Gitee自动构建部署SpringBoot项目

Jenkins + Docker + Github 自动部署-CSDN博客

基于Docker+Jenkins实现自动部署SpringBoot+Maven项目_gitee+jetkins+docker自动部署构建springboot+vue项目-CSDN博客

相关推荐
程序猿大波17 分钟前
基于Java,SpringBoot,Vue,HTML高校社团信息管理系统设计
java·vue.js·spring boot
Source、19 分钟前
Zabbix监控K8s集群
docker·kubernetes·zabbix
识途老码20 分钟前
k8s日志管理
云原生·容器·kubernetes
George_huhu1 小时前
云原生系列-K8S实战
云原生·容器·kubernetes
MasterNeverDown1 小时前
Docker Desktop 安装 Redis:轻松搭建本地缓存服务
redis·缓存·docker
背太阳的牧羊人2 小时前
docker构建并启动前端
docker·容器
未完成的歌~3 小时前
云安全之k8s未授权漏洞总结
云原生·容器·kubernetes
Cloud_.4 小时前
Spring Boot整合Redis
java·spring boot·redis·后端·缓存
Wwwilling4 小时前
docker中怎么把docker中的python package转成conda,目前还没有conda
python·docker·conda