制作jdk17+pinpoint-agent基础镜像

制作jdk17+pinpoint-agent基础镜像

本文仅介绍制作镜像,pinpoint 知识不在此介绍,不了解 pinpoint 知识 ,请先行学习

1.背景介绍

新搭建的java应用,基于 Springboot3.2.0 + Spring6.1.1 + jdk17 版本。

从Springboot3开始,jdk最低要求为jdk17,因为之前 jdk1.8 + pinpoint agent 镜像不能再使用。

在制作 jdk17 + pinpoint-agent 基础镜像前,需要用到 pinpoint agent 包。

在制作调试过程中,发现 pinpoint官网 提供的 pinpoint agent 包,都不支持jdk17。

下载(2024/2/7下载)pinpoint源码后,查看最新master分支,发现已在支持jdk17,只是还处于快照版本,未正式发布。

通过编译 pinpoint 源码后,得到 pinpoint-agent-3.0.0-SNAPSHOT 包。

pinpoint-agent-3.0.0-SNAPSHOT 包计划沿用之前安装的 pinpoint collector 服务。

pinpoint collector 服务为:10.28.19.106

2.编写dockerfile

准备好 pinpoint-agent-3.0.0-SNAPSHOT 包后,再找一个jdk17基础镜像,在此之上,将 pinpoint agent 集成进去。

挑选jdk17基础镜像时,对比分析了下镜像大小,这里选择的是 eclipse-temurin:17.0.10_7-jre-alpine

脚本如下,复制粘贴至命令控制台可在/opt目录下,直接创建 jdk17-pinpoint.dockerfile

tee /opt/jdk17-pinpoint.dockerfile << \EOF
# 基础镜像
FROM eclipse-temurin:17.0.9_9-jre-alpineLABEL maintainer="胡桃夹子 <infowangxin@139.com>"# 环境变量设置
ENV TZ="Asia/Shanghai"
ENV PINPOINT="-javaagent:/opt/pinpoint-agent-3.0.0-SNAPSHOT/pinpoint-bootstrap.jar -Dprofiler.jdbc.mssql=true -Dprofiler.jdbc.mssql.tracesqlbindvalue=true"# 安装包
COPY pinpoint-agent-3.0.0-SNAPSHOT.tar.gz /optRUN tar -vxf /opt/pinpoint-agent-3.0.0-SNAPSHOT.tar.gz -C /opt \&& rm /opt/pinpoint-agent-3.0.0-SNAPSHOT.tar.gz
EOF

上面dockerfile文件中,-Dprofiler.jdbc.mssql=true -Dprofiler.jdbc.mssql.tracesqlbindvalue=true 这段,可以选择去掉,

这段是开启 pinpoint 打印 sqlserver sql 脚本及参数。

3.制作镜像

先获取jdk基础 eclipse-temurin:17.0.10_7-jre-alpine

docker pull eclipse-temurin:17.0.10_7-jre-alpine

jdk基础镜像获取成功之后,再进入opt目录构建 jdk17 + pinpoint-agent 基础镜像

cd /opt
docker build --no-cache -f jdk17-pinpoint.dockerfile -t myharbor.com/java:17.0.10_7-jre-alpine-pinpoint .

4.制作应用镜像

这里介绍如何与应用集成在一起制作docker镜像,这里准备了demo.jar,由 Springboot3.2.0 + Spring6.1.1 + jdk17 编译产生。

已完成了 demo.jar 测试,可正常运行。

4.1 编写应用dockerfile

脚本如下,复制粘贴至命令控制台可在/opt目录下,直接创建 demo.dockerfile

tee /opt/demo.dockerfile << \EOF
# 镜像模板
FROM myharbor.com/java:17.0.10_7-jre-alpine-pinpoint# 环境变量设置
ENV JAR=demo.jar
ENV TZ="Asia/Shanghai"# 添加标签,使用构建参数
LABEL maintainer="胡桃夹子 <infowangxin@139.com>"# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp# 指定默认目录
WORKDIR /opt/app# 传包
COPY $JAR .# 设置Pinpoint Agent的相关环境变量
ENV PINPOINT_OPT="$PINPOINT -Dprofiler.transport.grpc.collector.ip=10.28.19.106"# 带pinpoint-agent启动
ENTRYPOINT [ "sh", "-c", "java ${PINPOINT_OPT} $JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -DLANG=en_US.UTF-8 -Djava.security.egd=file:/dev/./urandom -jar $JAR"]
# 不带pinpoint-agent启动
# ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -DLANG=en_US.UTF-8 -Djava.security.egd=file:/dev/./urandom -jar $JAR"]
EOF

4.2编写应用docker-compose

脚本如下,复制粘贴至命令控制台可在/opt目录下,直接创建 demo-docker-compose.yml

tee /opt/demo-docker-compose.yml << \EOF
version: "3.1"services:demo:image: 'myharbor.com/demo:0.0.1-SNAPSHOT'container_name: demoports:- "18899:8080"environment:- JAVA_OPTS=-Dpinpoint.applicationName=demo -Dpinpoint.agentId=demo-108node
networks:devops:external:name: devops01
EOF

demo-docker-compose.yml 文件中的 pinpoint.applicationName 为pinpoint中展示的应用名、pinpoint.agentId 为节点名。

4.3应用测试

应用镜像构建

cd /opt
docker build --no-cache -f demo.dockerfile -t myharbor.com/demo:0.0.1-SNAPSHOT .

应用启动服务

cd /opt
docker-compose -f demo-docker-compose.yml up -d

观察 demo docker容器节点启动是否正常

docker logs -f --tail 1000 demo

demo 容器节点日志最前面有出现 pinpoint agent 日志,有打印 docker collector ip 等参数,表示当前 demo 应用已成功集成。

浏览器访问应用,再去 pinpoint web 中查看 demo 链路及日志情况。

至此,完成 jdk17 + pinpoint-agent 基础镜像制作,及与应用如何集成等所有步骤。

引用Reference

  • CentOS8搭建nfs服务
  • Kubernetes1.25.4版本安装
  • kubeasz安装kubernetes1.25.5
  • k8s一键安装redis单机版
  • k8s一键安装mysql8单机版
  • k8s部署springboot应用
  • Docker安装及学习
  • Docker制作springboot运行应用镜像
  • Docker制作Java8环境镜像
  • Docker安装Mysql5.7.31
  • Docker安装Mysql8.1.0
  • Elasticsearch单机版本安装
  • Elasticsearch集群安装
  • ELK安装
  • Docker安装ELK
  • zookeeper集群安装
  • Nginx日志切割
  • RabbitMQ集群安装
  • Docker安装RabbitMQ单机版
  • springboot集成prometheus+grafana
  • windows11安装android应用
  • Windows下多个JDK版本快速切换
  • MongoDB主从仲裁模式安装
  • 制作jdk17+pinpoint-agent基础镜像

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

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

相关文章

机器学习系列 - Mean Shift聚类

文章目录 前言一、原理前置知识点Mean Shift计算步骤 二、应用举例-图像分割三、聚类实战-简单实例bandwidth1bandwidth2总结 前言 Mean Shift&#xff08;均值漂移&#xff09;是基于密度的非参数聚类算法&#xff0c;其算法思想是假设不同簇类的数据集符合不同的概率密度分布…

Open CASCADE学习|创建多段线与圆

使用Open CASCADE Technology (OCCT)库来创建和显示一些2D几何形状。 主要过程如下&#xff1a; 包含头文件&#xff1a;代码首先包含了一些必要的头文件&#xff0c;这些头文件提供了创建和显示几何形状所需的类和函数。 定义变量&#xff1a;在main函数中&#xff0c;定义…

Java 将TXT文本文件转换为PDF文件

与TXT文本文件&#xff0c;PDF文件更加专业也更适合传输&#xff0c;常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求&#xff0c;可以查看本文中介绍的免费实现方法。 免费Java PDF库 本文介绍的方法需要用到Free Spire.PDF for Java…

开源!免费!Hugging Face推出GPT商城

Hugging Face发布开源AI助手制造工具&#xff0c;与OpenAI的定制GPT形成竞争 Hugging Face今年1月31日推出一款开源AI代码库——Hugging Chat Assistants&#xff0c;允许用户轻松创建特定功能的定制AI聊天机器人。 不同于OpenAI的ChatGPT商城需要每月20美金成为会员才能使用…

springboot(ssm悦己美容院后台管理系统 美容院管理系统Java系统

springboot(ssm悦己美容院后台管理系统 美容院管理系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5…

c语言--指针数组(详解)

目录 一、什么是指针数组&#xff1f;二、指针数组模拟二维数组 一、什么是指针数组&#xff1f; 指针数组是指针还是数组&#xff1f; 我们类比一下&#xff0c;整型数组&#xff0c;是存放整型的数组&#xff0c;字符数组是存放字符的数组。 那指针数组呢&#xff1f;是存放…

Scala 和 Java在继承机制方面的区别

Scala 和 Java 都是面向对象编程语言&#xff0c;都支持类的继承机制。然而&#xff0c;尽管两者在基础概念上有很多相似之处&#xff0c;但在具体的实现和语法上&#xff0c;Scala 的继承机制有其独特之处。以下是 Scala 和 Java 在继承方面的一些主要区别&#xff1a; 多重继…

编译原理实验1——词法分析(python实现)

文章目录 实验目的实现定义单词对应的种别码定义输出形式&#xff1a;三元式python代码实现运行结果检错处理 总结 实验目的 输入一个C语言代码串&#xff0c;输出单词流&#xff0c;识别对象包含关键字、标识符、整型浮点型字符串型常数、科学计数法、操作符和标点、注释等等。…

大数据术语系列(1)——COW和MOR,我如何使用chatgpt通俗易懂地理解了hudi这两种表类型

从传统数据库到大数据的转变&#xff0c;首当其冲的是各种术语的理解。 所以我与chatgpt发生了一系列对话&#xff0c;以便于我能快速理解这些术语。 我先把汇总的结果放在前边&#xff0c;后边会一步步地来说明我是如何获取这些信息的。前边我也发过一些关于chatgpt提示词相…

寒假提升(5)[利用位操作符的算法题]

日子是一天天地走&#xff0c;书要一页页地读。 ——毕淑敏 算法 位操作符的合理使用来解决问题1、题目大概2、理解和想办法解决3、结果 位操作符的合理使用来解决问题 1、题目大概 题目要求让我们把一个数字用二进制表示出来的时候&#xff0c;将他的奇数位置和偶数位置交换…

HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)

在前端和nodejs的世界里&#xff0c;有很多开源的js库&#xff0c;通过npm(NodeJS包管理和分发工具)可以安装使用众多的开源软件包。但是由于OpenHarmony开发框架中的API不完全兼容V8运行时的Build-In API&#xff0c;因此三方js库大都需要适配下才能用。 移植前准备 建议在适…

如何找准用户真实需求,建立情感连接?

品牌如果想要长久发展&#xff0c;除了独特的理念以及过硬的产品质量外还需要一点&#xff0c;那就在于它能持续、正确的为用户创造生活幸福感。这满足了用户的真实需求&#xff0c;并与其产生了情感连接&#xff0c;从而让品牌有机会逐渐融入、改善用户的生活实现长期价值与口…

10个简单有效的编辑PDF文件工具分享

10个编辑PDF文件工具作为作家、编辑或专业人士&#xff0c;您可能经常发现自己在处理 PDF 文件。无论您是审阅文档、创建报告还是与他人共享工作&#xff0c;拥有一个可靠的 PDF 编辑器供您使用都非常重要。 10个简单适用的编辑PDF文件工具 在本文中&#xff0c;我们将介绍当今…

操作系统-信号量机制(整型信号量 记录型信号量)与用信号量实现进程互斥,同步,前驱关系

文章目录 信号量机制总览信号量机制整型信号量记录型信号量例子记录型信号量小结 小结 用信号量实现进程互斥&#xff0c;同步&#xff0c;前驱关系总览信号量机制实现进程互斥信号量机制实现进程同步进程同步信号量实现进程同步 信号量机制实现前驱关系小结 信号量机制 总览 …

freeRTOS总结(十五)软件定时

1&#xff0c;软件定时器的简介&#xff08;了解&#xff09; 定时器&#xff1a; 从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xff0c;用户可自定义定时器的周期 硬件定时器&#xff1a; 芯片本身自带的定时器模块&#xff0c;硬件定…

使用dbeaver导入Excel到mysql数据库

最近业务需要将Excel导入到mysql数据库中&#xff0c;之前一直用的heisql&#xff0c;但是heidisql的导入功能太弱了&#xff0c;后来用了dbeaver&#xff0c;功能很强大。 一、安装dbeaver 首先去官网下载dbeaver社区版&#xff0c;社区版免费&#xff1a;dbeaver.io/ dbea…

FreeBSD portsnap失败留档

大约从2023.12月开始&#xff0c;portsnap aotu一直失败&#xff0c;报错&#xff1a; Fetching 5 metadata files... gunzip: (stdin): unexpected end of file metadata is corrupt. 这导致ports无法更新。 同时伴随的还有github连不上&#xff0c;初步怀疑是中美接口那边有…

3.2-媒资管理之MinIo分布式文件系统+上传图片

媒资管理 3 分布式文件系统 3.1 什么是分布式文件系统 要理解分布式文件系统首先了解什么是文件系统。 查阅百度百科&#xff1a; 文件系统是负责管理和存储文件的系统软件&#xff0c;操作系统通过文件系统提供的接口去存取文件&#xff0c;用户通过操作系统访问磁盘上的文…

JavaScript基础第三天

JavaScript 基础第三天 今天我们学习for循环、while循环、终止循环和无限循环。 1. for 循环 1.1. 语法 // 1. 语法格式 // for(起始值; 结束条件; 累加器) { // // 要重复执行的代码 // }1.2. 示例代码 let sum 0; for (let i 0; i < 100; i) {sum i; } alert(&q…

jsp康养小镇管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP康养小镇管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&a…