Jenkins 整合 Docker 自动化部署

Docker 安装 Jenkins 配置自动化部署

1. Docker 安装 Jenkins

1.1 拉取镜像文件
docker pull jenkins/jenkins
1.2 创建挂载文件目录
mkdir -p $HOME/jenkins_home
1.3 启动容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 进入容器查看初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登录控制台完成初始化

选择安装推荐的插件

在这里插入图片描述

2. 配置自动化部署

2.1 配置项目文件

2.1.1 创建DockerFile文件

文件位置与Java文件目录位置平级:

${WORKSPACE}/src/main/java

${WORKSPACE}/src/main/docker/DockerFile
在这里插入图片描述

# 该镜像需要依赖的基础镜像
FROM openjdk:8
ARG JAR_FILE
# 复制打包完成后的jar文件到/opt目录下
COPY ${JAR_FILE} /project-name.jar
# 运行过程中创建一个project-name.jar文件
RUN bash -c 'touch /project-name.jar'
# 声明服务运行在端口
EXPOSE 8801
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ]
# 指定维护者的名字
MAINTAINER name
2.1.2 添加pom文件插件
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--生产的镜像名称和版本--><imageName>project-category/${project.artifactId}:${project.version}</imageName><dockerHost>http://${dockerHost}:2375</dockerHost><forceTags>true</forceTags><!--dockerfile的位置--><dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory><!--jar名称配置,用在dockerfile中,需要自己写的可不用此配置--><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs><!--jar源位置--><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration><dependencies><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency></dependencies></plugin></plugins><!--build节点增加内容--><resources><resource><directory>src/main/resources</directory><!--开启过滤,用指定的参数替换directory下的文件中的参数--><filtering>true</filtering></resource></resources>
</build>

2.2 配置Jenkins

2.2.1 创建项目部署脚本

在这里插入图片描述

2.2.2 选择构建自由风格项目

在这里插入图片描述

2.2.3 General - 丢弃旧的构建历史,节省磁盘空间

在这里插入图片描述

2.2.4 源码管理 - 配置Git代码地址

1,配置Git地址(SSH)

2,配置账号密码

3,配置代码分支

在这里插入图片描述

2.2.5 源码管理 - 高级克隆行为

在这里插入图片描述

在这里插入图片描述

2.2.6 Build Steps - 调用顶层 Maven 目标

在这里插入图片描述

2.2.6.1 编译依赖项目

如果当前项目依赖了本地其他项目,则需要先打包依赖项目,没有则跳过此步骤

目标:clean install -pl rely-project-name -am

POM:${WORKSPACE}/rely-project-name/pom.xml

注:依赖项目的pom文件位置

在这里插入图片描述

2.2.6.2 打包部署项目

前提:此步骤需要目标服务器上的Docker进行过新增用户组操作和开发2375端口操作

目标: clean package -Pdev -DdockerHost=ip docker:build

注:-P 代表走不同的配置环境(非必须)

POM:${WORKSPACE}/project-name/pom.xml

注:打包项目的pom文件位置

在这里插入图片描述

2.2.7 Build Steps - Execute shell script on remote host using ssh

在目标部署服务器上将代码打包成镜像,并启动为容器

1,配置SSH账号密码

2,Docker启动容器命令

-p 端口设置需要与DockerFile文件设置一致

-d 镜像名称需要与本地项目pom文件中配置的一致

在这里插入图片描述

docker stop  project-center
echo '----stop container----'
docker rm  project-center
echo 'rm cont'
docker rmi `docker images | grep none | awk '{print $3}'`
echo '----rm none images----'
docker run  -it  --network=host    -p 8801:8801 --name  project-center -d project-category/project-name:1.0-SNAPSHOT 
echo '----start container----'
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/timezone
docker restart project-center

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS rpm安装Nginx和配置

CentOS rpm安装Nginx和配置 官方下载地址: http://nginx.org/en/download.html 介绍 Nginx(“engine x”)是一款由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 rpm包安装 #安装nginx&#xff0c…

k8s部署的java服务查看连接nacos缓存的配置文件

一、问题描述 k8s部署的java服务&#xff0c;使用nacos中的配置文件&#xff0c;需要在缓存中查看该服务具体是使用到了哪些配置文件 二、解决 参考文档: https://nacos.io/zh-cn/docs/system-configurations.html 文档描述如下: 进入java服务容器进入用户目录下的nacos&a…

4-Docker命令之docker version

1.docker version介绍 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [参数] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…

Android 12.0 mt6771新增分区功能实现四

1.前言 在12.0的系统rom开发中,在对某些特殊模块中关于数据的存储方面等需要新增分区来保存, 所以就需要在系统分区新增分区,接下来就来实现这个功能,看第四部分的新增分区的实现过程 2.mt6771新增分区功能实现四的核心类 device/mediatek/mt6771/ueventd.mt6771.rcdevice…

Java枚举详解

一、什么是枚举类型 枚举类型是一种特殊的数据类型&#xff0c;用于定义一组固定的命名常量。枚举类型提供了一种更强大、更安全和更易读的方式来表示一组相关的常量。 在Java中&#xff0c;枚举类型是通过使用enum关键字来定义的。枚举类型可以包含一个或多个枚举常量&#xf…

常见状态码总结

常见状态码总结 2xx 200 OK&#xff1a;表示服务器成功处理了客户端的请求&#xff0c;并返回所请求的数据。这是最常见的状态码&#xff0c;表示一切正常。201 Created&#xff1a;表示服务器成功处理了客户端的 POST 请求&#xff0c;并在服务器上创建了新的资源。204 No C…

vue005——vue组件入门(非单文件组件和单文件组件)

一、非单文件组件 1.1、单文件组件的使用 1.1.1、局部注册 1、第一步&#xff1a;创建school组件 2、第二步&#xff1a;注册组件&#xff08;局部注册&#xff09; 3、第三步&#xff1a;使用组件&#xff08;编写组件标签&#xff09; <!DOCTYPE html> <html>…

设计模式—里氏替换原则

1.概念 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说&#xff0c;任何基类可以出现的地方&#xff0c;子类一定可以出现。 LSP是继承复用的基石&#xff0c;只有当衍生类可以替换掉基类&#xff0c;软件单位的功能不受到影…

Spring注解方式整合第三方框架

目录 Spring整合MyBatis 原有xml方式整合配置如下 注解方式&#xff1a; Import可以导入如下三种类 第三方框架是指由其他开发者或团队开发的软件模块或库&#xff0c;供开发者在自己的应用程序中使用。这些框架通常提供了一系列已经封装好的功能或工具&#xff0c;可节省开…

使用flask返回json格式的数据

Flask Flask是一个使用Python编写的轻量级Web框架&#xff0c;它的设计理念是保持简单、灵活和易扩展。它的核心是Werkzeug和Jinja2&#xff0c;并且它本身只提供了非常基础的Web框架功能&#xff0c;例如路由和请求处理等。 使用Flask可以快速创建一个Web应用程序&#xff0c;…

跳跃游戏Ⅱ[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说&#xff0c;如果你在nums[i]处&#xff0c;你可以跳转到任意nums[i j]处: 0 < j < nums[i] i j < n …

【Python 训练营】N_8 打印阿姆斯特朗数

题目 输入一个数&#xff0c;判断是否为阿姆斯特朗数&#xff0c;阿姆斯特朗数指一个n位正整数等于其各位数字的n次方之和。其中n为3时是水仙花数。 分析 利用循环&#xff0c;获取数的长度&#xff0c;根据长度和定义&#xff0c;拆分出来运算 答案 while True:n int(in…

【Python 训练营】N_7 打印水仙花数

题目 打印出1000以内所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 …

数学启发式

学习资料&#xff1a; 优化求解器 | Gurobi 数学启发式算法&#xff1a;参数类型与案例实现 数学启发式算法 | 可行性泵 (Feasibility Pump)算法精讲&#xff1a;一份让您满意的【理论介绍编程实现数值实验】学习笔记(PythonGurobi实现) 大佬到底是大佬&#xff01;这些资料太…

Mac Ubuntu双系统解决WiFi和WiFi 5G网络不可用问题

文章目录 设备信息1. Ubuntu WiFi不可用解决方式查看Mac的网卡型号根据网卡型号搜索获取到的解决方法查看WiFi名字问题参考链接 2. 解决WiFi重启后失效问题打开终端创建.sh脚本文件编辑脚本文件复制粘贴脚本修改脚本权限创建并编辑systemd service文件复制粘贴下文到systemd se…

Typescript怎样对URL参数进行编码?

URL中的参数需要进行编码&#xff08;URL encoding&#xff09;是为了确保传输的参数不包含特殊字符&#xff0c;同时确保数据的可靠性和安全性。 特殊字符如空格、&、?等在URL中有特殊含义&#xff0c;如果直接包含在参数值中&#xff0c;可能会导致解析错误或者安全问题…

只考数据结构,计算机评级C+,成都信息工程大学考情分析

成都信息工程大学(C) 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、24专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1715字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 …

Java实现求最大值

1 问题 接收用户输入的3个整数&#xff0c;如何将最大值作为结果输出。 2 方法 采用“截图文字代码”的方式描述。 引入输入包调用main()函数&#xff0c;提示并接收用户输入的3个整数&#xff0c;并交由变量a b c来保存。对接收的3个数据进行比较&#xff0c;先比较a和b&#…

原型 原型对象 原型链

在面向开发对象开发过程中对每一个实例添加方法&#xff0c;会使每一个对象都存在该添加方法造成空间浪费 通过对原型添加公共的属性或方法&#xff0c;使所有实例对象都可访问 原型为了共享公共的成员 prototype 原型: JS为每个构造函数提供一个属性prototype(原型),它的值…

PostgreSQL数据库初接触

PostgreSQL默认端口为5432 windows下服务名为PostgreSQL-x64-10 10为版本 进程名为pg-ctl.exe 备份数据库命令&#xff1a; pg_dump -h localhost -p 5432 -U postgres -f d:\20231124.dmp tcsl7//tcsl7为数据库名 开始用-d 指定数据库&#xff0c;后来提示没-d参数 还…