【jenkins】idea+jenkins+docker+dockerfile+compose流水线部署java应用

news2024/11/24 7:20:37

目录

整体架构

环境准备

安装docker以及docker-compose

jenkins安裝

maven安装

portainer面板安装

sonarqube安装 

在项目中增加dockerfile和compose.yml脚本

 Dockerfile脚本内容

compose.yml脚本内容

jenkins安装必要插件

jenkins增加流水线任务

增加pipeline任务job

 增加pipeline脚本


整体架构

环境准备

安装docker以及docker-compose

#官网https://docs.docker.com/engine/install/centos/
sudo yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
curl -SL https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

jenkins安裝

docker安装,启动命令:docker run --name jenkins \
--restart always \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:2.413

maven安装

portainer面板安装

docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 \
--name portainer-alpha \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /application/portainer/data:/data \
portainer/portainer-ce:2.18.4

sonarqube安装 

docker安装,启动脚本:/usr/local/sonar/compose.yml
启动命令:docker-compose up -d
compose.yml文件内容如下:
services:
  postgres:
    image: postgres
    container_name: pgdb
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar

  sonarqube:
    image: sonarqube:9.9.1-community
    container_name: sonarqube
    restart: always
    depends_on:
      - postgres
    ports:
      - 9000:9000
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://pgdb:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar

在项目中增加dockerfile和compose.yml脚本

 Dockerfile脚本内容

#  jar镜像构建脚本
#  在jdk基础镜像上构架自定义jar包镜像
#  更改APP_NAME和ENTRYPOINT里面的jar名称,EXPOSE端口

# 基础镜像 指定jdk镜像名和及其版本
FROM openjdk:8u102
# 用标签写好开发者信息和系统描述信息
LABEL appdesc="xxx平台系统-系统服务" auth1="阿来小同学" email1="xxx@xxx.com"
#接收来自compose.yml文件中来的构建镜像参数
ARG ACTIVE
#dockerfile上下文用的环境变量,后面启动命令无法引用arg参数,所以需要环境环境变量来做中间转换
ENV APP_NAME=xxxxxxx APP_ACTIVE=$ACTIVE
#把宿主机的jar包复制到docker镜像的目录内
COPY ${APP_NAME}.jar /application/${APP_NAME}.jar
#指定docker内部的工作目录
WORKDIR /application
#描述下应用的端口
EXPOSE 12002
#数据卷挂载
VOLUME ["/application/logs"]
#执行命令以及参数 每一个字符串参数不要包含空格
ENTRYPOINT ["java","-XX:MetaspaceSize=256m","-XX:MaxMetaspaceSize=512m","-Xms256m","-Xmx256m","-Xmn128m","-Xss512k","-XX:SurvivorRatio=8","-XX:+UseConcMarkSweepGC","-jar","xxxxxxx.jar","--spring.profiles.active=${APP_ACTIVE}"]

compose.yml脚本内容

#jar镜像运行脚本
services:
  testservice:
    build:
      context: ./
      args:
        - ACTIVE=${ACTIVE}
        - TAG=${TAG}
    image: 自定义镜像名:${TAG:-latest}
    container_name: 自定义容器名
    restart: always
    volumes:
      - /application/logs:/application/logs
    ports:
      - 12002:12002

jenkins安装必要插件

WXWork Notification Plugin   

Git

Publish Over SSH

Pipeline

SonarQube Scanner for Jenkins

jenkins增加流水线任务

增加pipeline任务job

 增加pipeline脚本

 最后构建运行即可,看控制台实时日志排查问题

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

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

相关文章

windows下搭建php开发环境

http://wed.xjx100.cn/news/139397.html?actiononClick https://www.bilibili.com/read/cv23429835/ https://www.php.cn/faq/498307.html 安装iis 选择卸载程序 安装php 官网https://www.php.net/下载 选择线程安全 国内地址 下载完成后解压放到想存放的路径 添加p…

【Deviation】50 Matplotlib Visualizations, Python实现,源码可复现

详情请参考博客: Top 50 matplotlib Visualizations 因编译更新问题,本文将稍作更改,以便能够顺利运行。 本文介绍一下5中图示: Diverging Bars Diverging Texts Diverging Dot Plot Diverging Lollipop Chart with Markers Area Chart 1 Di…

OpenCv之车辆统计项目

目录 一、加载视频 二、去除背景 三、通过形态学识别车辆 四、对车辆统计 一、加载视频 代码如下: import cv2 import numpy as np import matplotlib.pyplot as plt# 视频加载 cap cv2.VideoCapture(2.mp4)# 循环读取视频帧 while True:ret,frame cap.read()if ret Tr…

【Vue】day03-VueCli(脚手架)

day03 一、今日目标 1.生命周期 生命周期介绍 生命周期的四个阶段 生命周期钩子 声明周期案例 2.综合案例-小黑记账清单 列表渲染 添加/删除 饼图渲染 3.工程化开发入门 工程化开发和脚手架 项目运行流程 组件化 组件注册 4.综合案例-小兔仙首页 拆分模块-局部…

Java-API简析_java.net.Proxy类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131881661 出自【进步*于辰的博客】 因为我发现目前,我对Java-API的学习意识比较薄弱…

Element Ui 时间组件

很多时候在我们做项目的时候一般都会用到时间组件&#xff0c;其次js中&#xff1a;new dateNow new Date();得到的是Thu Jul 28 2022 15:04:32 GMT0800 (中国标准时间)&#xff0c;都需要去转换自己需要的时间格式。 接下来介绍Element Ui中的一个组件: <el-date-picker…

windows 服务器允许 ping

打开 Widnows 防火墙&#xff0c;高级 – 入站规则 找到以下 4 条规则&#xff0c;一条一条的点击右边的 &#xff1a; 启用规则 文件和打印机共享(回显请求 - ICMPv4-In) 文件和打印机共享(回显请求 - ICMPv6-In) 虚拟机监控(回显请求 - ICMPv6-In) 虚拟机监控(回显请求- IC…

【Linux网络编程】- 认识 ‘’协议‘‘ | 网络版本计算器

目录 一、“协议” 的概念 二、结构化数据的传输 三、序列化和反序列化 序列化和反序列化的目的 四、网络版本计算器 服务端&#xff08;server&#xff09; 协议定制&#xff08;protocal&#xff09; 客户端&#xff08;client&#xff09; 服务器处理请求逻辑&#…

【Unity3D】地面网格特效

1 前言 本文实现了地面网格特效&#xff0c;包含以下两种模式&#xff1a; 实时模式&#xff1a;网格线宽度和间距随相机的高度实时变化&#xff1b;分段模式&#xff1a;将相机高度分段&#xff0c;网格线宽度和间距在每段中对应一个值。 本文完整资源见→Unity3D地面网格特效…

C++ —— 类与对象(上)

前言 由于C在C语言的基础上移植了新的编程理念&#xff0c;所以我们先回顾一下C语言所遵循的旧的理念。一般来说&#xff0c;计算机语言要处理两个概念——数据和算法。数据是程序使用和处理的信息&#xff0c;而算法是程序使用的方法。C语言与当前最主流的语言一样&#xff0…

关于 Qt中的QString内容存在\u0000使用QChart(0x00)消除 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/131860574 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

Maven 基础之简介,基础配置

Maven 基本概念 Maven 是基于项目对象模型&#xff08;Project Object Model&#xff09;&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 Maven 主要有 2 个功能&#xff1a;「项目构建」和「依赖管理」。 &#x1f58b; 说…

Godot 4 源码分析 - 增加管道通信

学习研究Godot 4&#xff0c;很爽&#xff0c;虽然很庞杂&#xff0c;但相对于自己的水平来说&#xff0c;很强大&#xff0c;尤其是vulkan这块直接打包可用&#xff0c;省得自己从头琢磨。 一点一点地消化、优化与完善&#xff0c;最终才能成为自己的。 这段时间就在Godot的…

POSIX线程编程

死在山野的风里&#xff0c;活在自由的梦里 本专栏参考教材是四川轻化工大学陈年老师的linux实验指导手册&#xff08;含学习通的一些程序笔记&#xff09;。 POSIX线程编程 1.线程是什么2.创建线程创建一个用户级的线程&#xff0c;实现在线程中更改进程&#xff08;主线程&a…

Bean小结

Bean是Spring框架中最核心的两个概念之一&#xff08;另一个是面向切面编程AOP&#xff09;。 Bean 定义 Spring 官方文档对 bean 的解释是&#xff1a; In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC contain…

从Vue2到Vue3【三】——Composition API(第三章)

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API&#xff08;第一章&#xff09;从Vue2到Vue3【二】Composition API&#xff08;第二章&#xff09;从Vue2到Vue3【三】Composition API&#xff08;第三章&#xff09;从Vue2到Vue3【四】C…

webrtc QOS方法二.4(flexfec 实现可优化点)

一、冗余报文和媒体报文组织结构优化点 以单帧10个媒体报文&#xff0c;冗余度20%为例。这里webrtc输出要有10个媒体包2个冗余包。webrtc输出的报文序列如下&#xff1a; 代码实现如下&#xff1a; UlpfecGenerator::AddPacketAndGenerateFec&#xff1a;攒够足够的帧 Forwar…

使用springboot进行后端开发100问

properties和yaml文件怎么互转 安装插件 properties文件和yaml文件区别 properties 文件通过“.”和“”赋值&#xff0c;值前不加空格&#xff0c;yaml通过“:”赋值&#xff0c;值前面加一个空格&#xff1b;yaml文件缩进用空格&#xff1b; properties只支持键值对&#x…

C++实现LRU(逐句讲解)

使用双向链表解决此问题&#xff0c;因为双向链表可以很容易的获取到头结点和尾结点。题目要求 get 和 put 要在O(1)的时间复杂度下运行&#xff0c;很显然要用set或map。根据题意&#xff0c;应使用map。 unordered_map<int,Node*> cache; map->first为Node中的key&a…

查看RabbitMQ日志---trace插件的使用

我的RabbitMQ是安装在docker里面的 所以我以下的方法都是根据这个路径去操作的 如果RabbitMQ安装在其他地方 请自行百度 1. 显示正在运行的RabbitMQ容器的名称或ID&#xff1a; docker ps这将启动所有正在运行的 Docker 容器&#xff0c;并包含 RabbitMQ 容器的信息。 使用…