【云原生】Docker Compose 构建 Jenkins

【云原生】Docker Compose 构建 JenkinsJenkins 是一个开源软件项目 是基于 Java 开发的一种持续集成工具 用于监控持续重复的工作 旨在提供一个开放易用的软件平台 使软件项目可以进行持续集成

? 作者:微枫Micromaple

? 主页:欢迎关注Micromaple

? 简介:Java程序员、后端全栈工程师

? 点赞?➕收藏⭐➕留言? 您的支持就是我前进的动力???

一、Jenkins

Jenkins是一个用Java编写的开源的持续集成工具,Jenkins提供了软件开发的持续集成服务。

1、创建目标文件夹

$ cd /usr/local $ mkdir docker $ cd docker $ mkdir jenkins $ cd jenkins $ vi docker-compose.yml 

2、创建docker-compose.yml

内容如下:

version: '3.1' services: jenkins: restart: always image: jenkins/jenkins container_name: jenkins ports: # 发布端口 - 8080:8080 # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信 - 50000:50000 environment: TZ: Asia/Shanghai volumes: - ./data:/var/jenkins_home 

安装过程中会出现数据卷目录权限问题,用以下命令解决:

chown -R 1000 /usr/local/docker/jenkins/data 

3、启动容器

docker-compose up -d 

启动完成后访问:http://ip:8080

4、解锁 Jenkins

在这里插入图片描述

Jenkins 第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins 即可方便的查看到初始密码。也可以根据提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword文件。

docker logs -f jenkins 
* * * Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 67b9966bc4334a17ad7a7daef043bac8 This may also be found at: /var/jenkins_home/secrets/initialAdminPassword * * * 

5、插件安装

插件是 Jenkins的核心,其丰富的插件可以满足不同人群的不同需求。

Jenkins 官网插件地址:https://plugins.jenkins.io/

输入初始密码后,选择自选方式安装插件。

在这里插入图片描述

注意:除了默认勾选的插件外,一定要勾选 Publish over SSH 插件,这是我们实现持续交付的重点插件。

在这里插入图片描述

点击安装后,根据网络情况,安装时间不一样,耐性等待即可。

出现部分插件安装失败时,点击重试按钮,多次重试,如果还是无法安装,记住这些插件的名字,稍后可以手动安装。

在这里插入图片描述

6、安装成功效果图

6.1、创建管理员账号

在这里插入图片描述

6.2、进入首页

在这里插入图片描述

7、Jenkins手动安装插件

  • 如下例子为安装中文插件
  • Manage Jenkins -> Manage Plugins -> Avaliable

在这里插入图片描述

  • 右上角搜索框查找想要安装的插件,选中,点击Download now and install after restart

在这里插入图片描述
在这里插入图片描述

  • 下载好后,重启Jenkins
    docker-compose down docker-compose up -d 

8、配置 JDK & Maven

  • 上传 JDK Maven tar 包到服务器(容器数据卷目录),进行解压缩。
  • Manage Jenkins -> Global Tool Configuration系统管理->全局工具配置)。
  • 安装 JDK
    /var/jenkins_home/jdk1.8.0_152 

在这里插入图片描述

  • 安装Maven

在这里插入图片描述

  • 点击保存

9、安装动态参数插件

该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚)

  • Manage Jenkins -> Manage Plugins -> Avaliable
  • 搜索 Extended Choice Parameter
  • 点击Download now and install after restart

在这里插入图片描述

10、配置 Jenkins 的 GitLab SSH 免密登录

  • 交互式进入 Jenkins 容器
    docker exec -it jenkins /bin/bash 
  • 生成 SSH KEY
    ssh-keygen -t rsa -C "" 
  • 查看公钥
    cat /var/jenkins_home/.ssh/id_rsa.pub 
  • 复制公钥到 GitLab

在这里插入图片描述

  • 手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息
    jenkins@bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git Cloning into 'test'... The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established. ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts. remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. jenkins@bc8b96:~$ 
  • 查看生成文件
    jenkins@bc8b96:~$ cd .ssh/ jenkins@bc8b96:~/.ssh$ ls -al total 20 drwx------ 2 jenkins jenkins 4096 Apr 9 19:03 . drwxr-xr-x 16 jenkins root 4096 Apr 9 19:03 .. -rw------- 1 jenkins jenkins 2602 Apr 9 18:57 id_rsa -rw-r--r-- 1 jenkins jenkins 572 Apr 9 18:57 id_rsa.pub -rw-r--r-- 1 jenkins jenkins 222 Apr 9 19:03 known_hosts jenkins@bc8b96:~/.ssh$ 

10.1、配置 Publish over SSH

  • 系统管理 -> 系统设置 -> Publish over SSH

在这里插入图片描述

  • 点击新增,其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录,选择 Use password, 输入目标服务器密码

在这里插入图片描述

  • 测试能否正常通信

在这里插入图片描述

  • 点击保存

11、持续交付 Maven 项目

11.1、为项目创建标签

GitLab 中为项目创建标签

在这里插入图片描述
在这里插入图片描述

11.2、在 Jenkins 中创建 Maven Project

Jenkins 中创建一个基于 Maven 的任务
在这里插入图片描述
在这里插入图片描述




这里没有Maven 项目选项,需要安装插件 Maven Integration Pipeline Maven Integration

在这里插入图片描述
在这里插入图片描述

11.3、配置第一次构建

在这里插入图片描述

11.3.1、构建项目

在这里插入图片描述

11.3.2、查看构建日志

在这里插入图片描述
在这里插入图片描述

11.4、配置正式构建

11.4.1、增加参数化构建过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:

def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ] ver_keys.execute().text.tokenize('\n') 
11.4.2、关闭源码管理

在这里插入图片描述

11.4.3、增加构建步骤

在这里插入图片描述
在这里插入图片描述

shell 脚本代码如下:

echo $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-dependencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package 
11.4.4、使用参数化构建项目

在这里插入图片描述

批准 groovy 脚本

在这里插入图片描述
在这里插入图片描述
再次点击参数化构建




在这里插入图片描述
在这里插入图片描述

查看构建日志

在这里插入图片描述
在这里插入图片描述

12、发送文件或执行远程命令

在这里插入图片描述
在这里插入图片描述

  • Source files:需要传输到远程目标服务器的文件
    /*.jar,docker/ 
  • Remove prefix:删除前缀。比如传输 /*.jar,我们打包的 .jar 文件是在 target 目录下的,传输时会一并创建 target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。
  • Remote directory:在远程目标服务器创建操作目录
    myapp 
  • Exec command:在远程目标服务器执行控制台命令
    cd /usr/local/jenkins/myapp cp target/myapp-1.0.0-SNAPSHOT.jar docker cd docker docker build -t 192.168.50.128:5000/myapp:v1.0.0 . docker push 192.168.50.128:5000/myapp:v1.0.0 docker-compose down docker-compose up -d docker image prune -f 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207205.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:20
下一篇 2026年3月19日 下午2:20


相关推荐

  • Docker使用方法_docker工作原理

    Docker使用方法_docker工作原理Docker作为轻量级虚拟化隔离解决方案,具有简单高效、移植方便、性能开销低等优势,在渗透测试领域可以利用Docker进行靶场环境搭建、工具开发测试、扫描工具配置、主机群部署等,可以让渗透测试工作更加简洁高效。

    2025年6月6日
    3
  • docker 2375

    docker 2375cd/usr/lib/systemd/system/vimdocker.service#在原本的ExecStart中添加tcp://0.0.0.0:2375[Service]Type=notify#thedefaultisnottousesystemdforcgroupsbecausethedelegateissuesstil…

    2022年6月11日
    32
  • docker 上传本地镜像_docker本地仓库

    docker 上传本地镜像_docker本地仓库前言之前通过docker搭建过jenkins+python3环境,如果想要在不同的机器上搭建一样的环境,就可以将之前搭建的镜像上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境。如果公开的话

    2022年7月31日
    20
  • docker打包镜像到本地_如何从虚拟机导出镜像

    docker打包镜像到本地_如何从虚拟机导出镜像引言当我们在测试环境(本文特指docker容器)部署好自己得服务得时候,想在生产环境上部署我们得服务,又害怕环境不一样导致服务不能运行,那么这个时候就可以把我们得容器导出为镜像,然后再把镜像导出为压缩包,接下来把压缩包复制到我们的生产环境,然后在生产环境把压缩包导入为镜像,最后使用此镜像开一个容器,然后在容器内打开我们的服务,那么我们的服务就可以正常运行啦!环境简介系统环境:ubuntu18.04如果要在新的服务器使用我们的镜像,那么需要新的服务器和你测试环境的服务器的底层系统一致,即如果你测试环

    2025年9月21日
    9
  • 使用阿里云管理Docker镜像

    使用阿里云管理Docker镜像因为网络原因 在国内向 DockerHub 进行推送 拉取镜像等操作耗时会比较长 尤其是上传 export 导出的容器镜像 还有可能因为网络波动导致推送失败 因此需要使用国内的镜像托管服务

    2026年3月17日
    2
  • docker部署jenkins安装使用教程_docker关闭所有容器

    docker部署jenkins安装使用教程_docker关闭所有容器前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

    2022年7月30日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号