docker-compose集成Jenkins部署,打包,发布方式

 更新时间:2024年10月31日 09:11:32   作者:佛说"獨"  
在Docker环境中安装配置Jenkins,需挂载JDK、Maven等至容器指定路径,设置国内镜像提升下载速度,并添加插件与凭据完成环境配置

前言

需要提前准备的条件

  • 1.git
  • 2.Maven环境
  • 3.Docker环境
  • 4.JDK环境(Centos7.4自带JDK环境去除,重装的JDK)
  • 5.Nodejs #前端发布使用

一、 jenkins部署

下载镜像

#查询镜像
docker search jenkins

#下载镜像
docker pull jenkins/jenkins

编写docker-compose.yml

version : '3'
services:
  jenkins:
    user: root
    restart: always
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - /srv/jenkins/jenkins_home/:/var/jenkins_home/
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /etc/docker/daemon.json:/etc/docker/daemon.json
      - /usr/local/java/jdk1.8.0_161:/usr/local/java/jdk1.8.0_161
      - /usr/local/maven/apache-maven-3.9.1:/usr/local/maven/apache-maven-3.9.1
      - /usr/local/node13:/usr/local/node13
      - /root/.ssh:/root/.ssh

查询linux服务器中jdk,maven,nodejs的路径地址,挂载到jenkins容器的指定路径,如下图:

写法:-服务器路径:容器路径

图片内容说明将服务器中的jdk,maven,nodejs挂载到jenkins容器中

- /root/.ssh:/root/.ssh 为ssh生成的密钥地址!!!

图中可以合并写成

    volumes:
      - /srv/jenkins/jenkins_home/:/var/jenkins_home/
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /etc/docker/daemon.json:/etc/docker/daemon.json
      - /usr:/usr  #将服务器usr目录挂载到jenkins容器的usr目录中
      - /root/.ssh:/root/.ssh

启动容器

Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,如有需要可以设置下载地址为国内镜像站

cd /home/jenkins_home/
cat hudson.model.UpdateCenter.xml 
# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

启动容器

#在docker-compose.yml所在目录启动
docker-compose up -d jenkins

访问Jenkins

在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。

即:http://192.168.0.1:8080/

#日志查看
docker logs jenkins

#根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是jenkins容器中的,所以我们通过如下命令获取一下
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
#如果查不到,可以通过find命令,进行全局搜索映射到服务器的initialAdminPassword的文件
find / -name "initialAdminPassword"

安装插件

  • 设置管理员信息
  • 配置jenkins路径(默认即可)
  • 进入首页

至此,Jenkins部署完成!!!

二、 jenkins打包,发布配置

安装插件

需要安装的插件:

  • 1.NodeJs
  • 2.SSH Pipeline Steps
  • 3.Maven Integration

全局工具配置

全局配置包含maven,jdk,nodejs,配置中的路径为jenkins容器中的路径:

如有报错:

请查看docker-compose.yml中配置是否正确

或者 进入jenkins容器

命令:java docker exec -it 容器id /bin/bash 

查看配置是否挂载到容器中,确认容器中的usr的maven,jdk,nodejs文件的路径是否和jenkins中路径一致

maven的settings.xml配置

JDK配置

Maven配置

NodeJS配置(发布前端使用)

如果没有,确认插件是否安装

凭据配置

SSH类型

gitssh凭证配置(拉取代码的时候使用)

SSH密钥生成

执行命令后,全敲回车 ssh-keygen -t rsa -C "git账号"

查看生成的密钥

  • id.rsa:私钥文件
  • id.rsa.pub:公钥文件​​​​

私钥配置到jenkins凭据中,公钥配置到git中

账号密码类型

目标服务器(需要发布代码的服务器)的凭证配置(上传jar包、前端文件时使用)

发布服务-后端(仅供参考)

以发布 demo 为例:

在目标服务器上创建docker-compose.yml文件,dockerfile文件夹

在dockerfile中新建 demo 的文件夹

在 demo 新建Dockerfile

# 基础镜像
FROM  openjdk:8-jre
# author
MAINTAINER zz

# 挂载目录
VOLUME /home/front
# 创建目录
RUN mkdir -p /home/front
# 指定路径
WORKDIR /home/front
# 复制jar文件到路径
COPY ./demo.jar /home/front
# 启动认证服务
ENTRYPOINT ["java","-jar","demo.jar"]

在jenkins中新建任务-输入任务名称demo,选择流水线

流水线脚本配置

运行项目

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker如何打包本地环境为tar包给别人使用

    Docker如何打包本地环境为tar包给别人使用

    这篇文章主要介绍了Docker如何打包本地环境为tar包给别人使用问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • docker kubernetes dashboard安装部署详细介绍

    docker kubernetes dashboard安装部署详细介绍

    这篇文章主要介绍了docker kubernetes dashboard安装部署详细介绍的相关资料,需要的朋友可以参考下
    2016-10-10
  • Docker中安装ElasticSearch+Kibana+Logstash(ELK)实践记录

    Docker中安装ElasticSearch+Kibana+Logstash(ELK)实践记录

    文章介绍了如何使用Docker在本地安装和配置Elasticsearch、Kibana和Logstash(ELK堆栈),本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-03-03
  • Docker+Nginx单副本零停机发布实现并解决文件访问 404

    Docker+Nginx单副本零停机发布实现并解决文件访问 404

    本文提供了解决Docker容器文件隔离问题的方法,核心是Nginx和业务容器挂载相同的宿主机文件目录,通过Nginx重写规则去掉/api前缀匹配业务服务路径,同时发布时流量同步切换到临时副本,避免404和中断问题
    2026-04-04
  • Dockerfile打包部署详细图文教程

    Dockerfile打包部署详细图文教程

    这篇文章主要介绍了Dockerfile打包部署的相关资料,并详细解释了从创建Dockerfile到启动容器的每一步过程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • CentOS7  docker服务无法启动解决方案及实现步骤

    CentOS7 docker服务无法启动解决方案及实现步骤

    这篇文章主要介绍了CentOS7 docker服务无法启动解决方案及实现步骤的相关资料,这里对Docker 服务无法启动做了详细的排查工作及流程,并附解决办法,需要的朋友可以参考下
    2016-12-12
  • Dockerfile中 CMD和ENTRYPOINT的区别小结

    Dockerfile中 CMD和ENTRYPOINT的区别小结

    本文主要介绍了Dockerfile中 CMD和ENTRYPOINT的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-09-09
  • docker自建rustdesk-server远程桌面的解决方案

    docker自建rustdesk-server远程桌面的解决方案

    RustDesk 是一款可以平替 TeamViewer 的开源软件,旨在提供安全便捷的自建方案,这篇文章主要介绍了docker自建rustdesk-server远程桌面的解决方案,需要的朋友可以参考下
    2024-07-07
  • Docker run流程及镜像的基本命令详解

    Docker run流程及镜像的基本命令详解

    本文主要介绍了Docker中run流程及镜像的基本命令,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Docker中的容器资源限制解读

    Docker中的容器资源限制解读

    文章介绍了Docker中限制容器资源的方法,包括通过--cpuset-cpus指定CPU核心、--cpu-shares调整调度优先级(如512低于默认1024),以及--memory限制内存大小,最后说明了如何验证这些配置
    2025-09-09

最新评论