使用docker安装jenkins,然后使用jenkins本地发版和远程发版

2024-09-05 00:04

本文主要是介绍使用docker安装jenkins,然后使用jenkins本地发版和远程发版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用docker安装jenkins,然后使用jenkins本地发版和远程发版

1、安装docker

1.安装必要的一些系统工具
sudo yum install docker-ce
2.添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.更新yum索引列表并安装Docker引擎
sudo yum makecache fast
4.yum索引列表没有更新可以直接使用yum makecache(若有报错请翻阅第四部分第二条)
docker-ce:社区版的,docker-ee:企业版的
sudo yum install docker-ce
5.安装过程中会提示确认,输入y以确认
6.开启Docker服务
sudo service docker start
或者 systemctl start docker
7.测试是否安装成功
docker version

2、使用安装jenkins

  1. 启动docker的jenkins
#拉取镜像docker pull jenkins/jenkins
# -p端口映射,-v挂载工作目录 --env 指定一些配置 如--prefix是我要使用nginx代理,所以给jenkins加上前缀
# 第二个-v是挂载的maven,需要先在官网下载一个maven,把配置文件改为阿里云镜像,服务器上的路径是/datadrive/software/docker-config/jenkins/maven,jenkins容器内对应的是/home/maven路径
# 挂载jenkins_home时可能在启动时会报Permission denied,可以进入文件目录,使用chmod 777 /datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home 给这个文件夹权限
# git和apache-maven-3.6.3可以到jenkins的全局工具中选择自动安装,当然jdk也可以,这样就可以不挂载了docker run --name jenkins \-p 8003:8080 -p 50000:50000 \-v /datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home \-v /datadrive/software/apache-maven-3.6.3:/datadrive/software/apache-maven-3.6.3 \-v /datadrive/software/jdk1.8.0_301:/datadrive/software/jdk1.8.0_301 \-v /datadrive/software/git:/datadrive/software/git \-v /datadrive/:/datadrive/ \-v /run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v "$HOME":/home \--env JENKINS_OPTS="--prefix=/jenkins -Xmx512m" \-d jenkins/jenkins
  1. 构建jenkins容器如果出现错误
    touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
    Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    表示容器中的/var/jenkins_home路径对应的宿主机地址/datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home
    的权限不足,需要把宿主机的地址权限使用chmod 777 xxx更改下,再启动容器就可以了
  2. 进入jenkins容器内
#jenkins账号登录进入docker exec -it jenkins bash#root账号登录进入docker exec -u 0 -it jenkins bashwhoami docker容器可以查看当前用户是否为root# 获取密码cat /var/jenkins_home/secrets/initialAdminPassword
  1. 构建流程

1.插件管理中选择Available plugins菜单搜索:Publish Over SSH插件下载
在这里插入图片描述
2.全局工具配置
 1.如果是自动安装它的安装路径是/datadrive/software/docker-config/jenkins/jenkins_home/tools,注意是docker的映射路径jenkins_home
 2.jdk安装,可以使用宿主机的jdk,但是启动docker的时候需要将宿主机的jdk映射到docker中;
在这里插入图片描述
 3.安装Git installations
在这里插入图片描述
 4.Maven安装,自动安装路径
在这里插入图片描述
3.cd /datadrive/software/docker-config/jenkins/jenkins_home/workspace这个路径是jenkins的存储路径,构建项目存储在这个路径下
4.凭据管理,新增git账号和linux账号的凭据
在这里插入图片描述
5.系统管理菜单
在这里插入图片描述
6.构建任务
 1.新建任务,填写任务名称,选择构建一个自由风格的软件项目
在这里插入图片描述
 2.配置git
在这里插入图片描述

 3.选择Build Steps,按照顺序添加下面两个构建步骤
在这里插入图片描述

  1.调用顶层 Maven 目标
在这里插入图片描述
   2.执行 shell
在这里插入图片描述

  1. 构建错误

1.git rev-parse --resolve-git-dir /var/jenkins_home/workspace/ai-admin/.git # timeout=10
  可以忽略
2.构建项目出现错误:Exception:Auth fail for methods ‘publickey,gssapi-keyex,gssapi-with-mic,password’
 chmod 700 /root/.ssh
 chmod 600 /root/.ssh/authorized_keys
3.com.jcraft.jsch.JSchException: Session.connect: java.net.SocketTimeoutException: Read timed
  timeout延长到100
4.symbol class base64encoder location package sun.misc
 到全局工具中把jdk设置为1.8,指定jdk的 JAVA_HOME=/datadrive/software/jdk1.8.0_301,宿主机的映射路径
5.jenkins cp: cannot create regular file xxx Permission denied
 使用sudo
6./tmp/jenkins17356870084788890789.sh: line 71: sudo: command not found
 找不到sudo命令,需要使用root账号登录容器docker exec -u 0 -it jenkins bash,进行yum下载命令
7.bash: docker: command not found
  -v /run/docker.sock:/var/run/docker.sock
 -v /usr/bin/docker:/usr/bin/docker
8.dial unix /var/run/docker.sock: connect: permission denied
  重启失效:sudo chmod 666 /var/run/docker.sock
9.bash: /usr/bin/docker: Permission denied
 sudo chmod 777 /usr/bin/docker
10.Step 1/7 : FROM java:8
 manifest for java:8 not found: manifest unknown: manifest unknown
 DockerFile中的FROM镜像有问题
11.E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
 这里是权限报错,在exec进来的时候加上 -u 0 即可:
  docker exec -u 0 -it jenkins bash
12.bash: yum: command not found
 apt-get update
  apt-get install sshpass 安装sshpass命令
13.jenkins执行shell执行完成后无法停止
 是因为使用sshpass登录需要执行exit退出指令
14.stderr: fatal: unable to access ‘https://gitee.com/hahaha9/ai-project.git/’:Failed to connect to gitee.com port 443 after 255971 ms: Couldn’t connect to server
 git仓库地址Repository URL有误,如果是gitee仓库有时候可以不稳定,到本地拉取提交下项目再试试
8.Dockerfile和ssh脚本
 1.Dockerfile

# 指定是基于哪个基础镜像
FROM openjdk:8-jdk# 作者信息
MAINTAINER wwj# 挂载点声明
VOLUME /tmp# 将本地的一个文件或目录,拷贝到容器的文件或目录里,这里注意目录结构,前面的是对应宿主机的目录
ADD ai-toc-service-1.0-SNAPSHOT.jar ai-toc-service-1.0-SNAPSHOT.jar#shell脚本
RUN bash -c 'touch /ai-toc-service-1.0-SNAPSHOT.jar'# 将容器的8222端口暴露,给外部访问。
EXPOSE 8222ENV JVM_PARAMS = "-XX:MetaspaceSize=512m","-XX:MaxMetaspaceSize=512m","-Xms2048m","-Xmx2048m","-Xmn256m","-Xss256k","-XX:SurvivorRatio=8","-XX:+UseConcMarkSweepGC"# 当容器运行起来时执行使用运行jar的指令ENTRYPOINT ["java","-Dserver.port=8222","-Dfile.encoding=utf-8","-jar","ai-toc-service-1.0-SNAPSHOT.jar","--spring.cloud.bootstrap.location=/datadrive/mnt/ai/ai-toc-service/config/bootstrap.yml","&"]CMD ["${JVM_PARAMS}"]

 2.ssh脚本

#!/bin/bash -ilex
cd /datadrive/software/docker-config/jenkins/jenkins_home/workspace/ai-payment-service/ai-service/ai-payment-service
sshpass -p 'xxx' scp -q -o StrictHostKeyChecking=no target/ai-payment-service-1.0-SNAPSHOT.jar root@x.x.x.x:/datadrive/mnt/ai/ai-payment-service/ai-payment-service-1.0-SNAPSHOT.jar
echo "后端服务上传成功!"
sshpass -p 'xxx' ssh -tt root@x.x.x.x << EOF
echo '登录成功!准备执行命令'cd /datadrive/mnt/ai/ai-payment-service
docker rm -f ai-payment-service
sleep 1
docker rmi -f ai-payment-service:1.0
sleep 1
docker build -t ai-payment-service:1.0 -f /datadrive/mnt/ai/ai-payment-service/Dockerfile .
sleep 1
docker run -d \
-p 8223:8223 \
-v /datadrive/mnt/ai/ai-payment-service/config/bootstrap.yml:/datadrive/mnt/ai/ai-payment-service/config/bootstrap.yml \
-v /datadrive/mnt:/datadrive/mnt \
--name ai-payment-service ai-payment-service:1.0
exit

这篇关于使用docker安装jenkins,然后使用jenkins本地发版和远程发版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137414

相关文章

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详