docker-compose部署一款老牌apm监控软件-- pinpoint(需定制docker镜像)

news2025/1/23 2:11:48

一、背景

公司测试环境需要重新部署一套apm监控软件,选择的是我们开发都使用过的pinpoint,当然首选使用docker-compose部署。

可是,在部署的过程中,却遇到了不少问题。

无法直接使用官网提供的docker-compose.yml,需要我们进行一个改动。

本文基于官方提供的部署方式,修改并部署。

pinpoint by dockerhub

二、官方部署

https://github.com/pinpoint-apm/pinpoint-docker

1、下载并安装

docker及docker-compose环境都已准备好,

git clone https://github.com/pinpoint-apm/pinpoint-docker.git

cd pinpoint-docker

docker-compose pull && docker-compose up -d

2、问题总结

  • 镜像redis下载超时
  • 镜像pinpoint-batch下载超时
  • 容器pinpoint-mysql启动失败

三、镜像redis下载超时

  • 下载超时的错误详情
ERROR: for redis  error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d9/d9c89935bd08c4d201eb947987897dcc5070a83333324a04227ee6be144865f5/data?verify=1718158345-BXlYVgAd3DyxcHJ50dLhbNtdgXg%3D: dial tcp 173.208.182.68:443: i/o timeout

ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d9/d9c89935bd08c4d201eb947987897dcc5070a83333324a04227ee6be144865f5/data?verify=1718158345-BXlYVgAd3DyxcHJ50dLhbNtdgXg%3D: dial tcp 173.208.182.68:443: i/o timeout
  • 解决办法
    更换redis:7.0.14 为 redis:latest (当然,你可以使用redis的其他版本,保证镜像能顺利下载即可)

另外redis更改端口为6380,涉及到两个地方,除了docker-compose.yml,还需要修改.env文件。

  redis:
    image: redis:latest
    restart: always
    hostname: pinpoint-redis
    ports:
      - "6380:6379"
    networks:
      - pinpoint
### Pinpoint redis
SPRING_DATA_REDIS_HOST=pinpoint-redis
SPRING_DATA_REDIS_PORT=6380
SPRING_DATA_REDIS_USERNAME=default
SPRING_DATA_REDIS_PASSWORD=

四、镜像pinpoint-batch下载超时

ERROR: for pinpoint-batch  error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/77/77482c4fde2465a77d972273f440a7022efdced0317a3e164296774e9ad2d0c7/data?verify=1718158345-bqhO4REthaZmR5%2BLFBZcmvf%2Fr3M%3D: dial tcp 173.208.182.68:443: i/o timeout

ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d9/d9c89935bd08c4d201eb947987897dcc5070a83333324a04227ee6be144865f5/data?verify=1718158345-BXlYVgAd3DyxcHJ50dLhbNtdgXg%3D: dial tcp 173.208.182.68:443: i/o timeout

dockerhub网站上确有镜像pinpointdocker/pinpoint-batch,却无法下载。

所以我更换到另外一台机器,由它来下载该镜像,然后推送镜像到私有仓库。

# 1、docker pull pinpointdocker/pinpoint-batch   


# 2、docker images | grep "pinpoint-batch"
# 找到imageId

# 给镜像打标签,77482c4fde24是imageId
# 3、docker tag 77482c4fde24 192.168.10.60:8086/xxx/pinpoint-batch:latest

# 推送镜像到私库
# 4、docker push 192.168.10.60:8086/xxx/pinpoint-batch:latest

在这里插入图片描述

更改docker-compose.yml中pinpoint-batch的镜像名称。

  • 更改前
    在这里插入图片描述
image: "pinpointdocker/pinpoint-batch:${PINPOINT_VERSION}"
  • 更改后
    在这里插入图片描述
image: "192.168.10.60:8086/xxx/pinpoint-batch:${PINPOINT_VERSION}"

五、容器pinpoint-mysql启动失败

  • 缺少curl导致容器启动失败,原因是它会使用curl去远端下载两个sql文件。
    在这里插入图片描述
curl -SL "https://raw.githubusercontent.com/ga-ram/pinpoint/latest/web/src/main/resources/sql/CreateTableStatement-mysql.sql" -o /docker-entrypoint-initdb.d/CreateTableStatement-mysql.sql &&

curl -SL "https://raw.githubusercontent.com/ga-ram/pinpoint/latest/web/src/main/resources/sql/SpringBatchJobRepositorySchema-mysql.sql" -o /docker-entrypoint-initdb.d/SpringBatchJobRepositorySchema-mysql.sql &&
      

把CreateTableStatement-mysql.sql和SpringBatchJobRepositorySchema-mysql.sql放在容器的路径/docker-entrypoint-initdb.d/下,容器在启动后执行着两个sql文件的脚本。

1、解决办法

  • 定制mysql镜像,不直接使用官方的镜像。
  • 在官方容器里安装curl工具

本文采用的是定制mysql镜像,手动下载sql文件到本地,然后在Dockerfile中,拷贝它们至镜像里。

在这里插入图片描述

2、Dockerfile

# 使用官方 MySQL 5.7 镜像作为基础镜像
FROM mysql:5.7

# 将初始化 SQL 脚本文件复制到容器中
COPY CreateTableStatement-mysql.sql /docker-entrypoint-initdb.d/
COPY SpringBatchJobRepositorySchema-mysql.sql /docker-entrypoint-initdb.d/

# 暴露 MySQL 默认端口
EXPOSE 3306

3、构建镜像,并推送到私库

这一点,在我写的许多文章里都有反复提及,就不赘述。

在这里插入图片描述

4、更改docker-compose.yml中的mysql镜像名称

  • 更改前
pinpoint-mysql:
    container_name: pinpoint-mysql
    image: mysql:8.0
    restart: "no"
    hostname: pinpoint-mysql
    entrypoint: > 
      sh -c "
      curl -SL "https://raw.githubusercontent.com/ga-ram/pinpoint/latest/web/src/main/resources/sql/CreateTableStatement-mysql.sql" -o /docker-entrypoint-initdb.d/CreateTableStatement-mysql.sql &&
      curl -SL "https://raw.githubusercontent.com/ga-ram/pinpoint/latest/web/src/main/resources/sql/SpringBatchJobRepositorySchema-mysql.sql" -o /docker-entrypoint-initdb.d/SpringBatchJobRepositorySchema-mysql.sql &&
      sed -i '/^--/d' /docker-entrypoint-initdb.d/CreateTableStatement-mysql.sql &&
      sed -i '/^--/d' /docker-entrypoint-initdb.d/SpringBatchJobRepositorySchema-mysql.sql &&
      docker-entrypoint.sh mysqld
      "
    ports:
      - "3306:3306"
  • 更改后
  pinpoint-mysql:
    container_name: pinpoint-mysql
    # 私库的镜像名称
    image: 192.168.10.60:8086/xxx/mysql:5.7
    restart: "no"
    hostname: pinpoint-mysql
    # 去掉curl下载sql文件的命令
    entrypoint: >
      sh -c "
      sed -i '/^--/d' /docker-entrypoint-initdb.d/CreateTableStatement-mysql.sql &&
      sed -i '/^--/d' /docker-entrypoint-initdb.d/SpringBatchJobRepositorySchema-mysql.sql &&
      docker-entrypoint.sh mysqld
      "
    ports:
      - "3306:3306"

六、总结

修改完docker-compose.yml后

再次执行 docker-compose up -d 启动所有的镜像。

在这里插入图片描述

可以看到, 最新版本的pinpoint比之前的组件变多了。

访问pinpoint-web(8080端口), http://localhost:8080/

在这里插入图片描述

这是因为在docker-compose里有部署一个quickapp示例程序。

在这里插入图片描述
在这里插入图片描述

所以说, 在正式环境下, 我们是需要删掉上述两段。

删除后的容器列表,见下:
在这里插入图片描述

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

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

相关文章

ATA-3080C功率放大器在电解液体浸润性测试中的应用

现在的电子设备上的供电电池多为可反复充放电的锂电池,这种在我们日常生活中扮演着重要角色的电池,却有着自燃、爆炸的风险;随着电池在生活中的普及,电池检测相关行业和领域也随之发展。那么功率放大器在电解液体浸润性测试中有什…

Stack详解(含动画演示)

目录 Stack详解1、栈数据结构动画演示2、Stack的继承体系3、Stack的push (入栈)方法4、Stack的pop (出栈)方法5、Stack是如何利用Vector实现栈数据结构的?6、自己实现栈(不借助JDK提供的集合)7、自己实现栈(借助JDK提供的集合)利用 ArrayDeque 实现高性能的非线程安…

深入理解 Vue Router 及其 `router` 和 `route` 变量

深入理解 Vue Router 及其 router 和 route 变量 在使用 Vue.js 进行单页面应用开发时,Vue Router 是一个不可或缺的工具。它使得我们可以轻松地管理应用中的路由,提供了流畅的用户体验。然而,在实际开发中,许多开发者可能会混淆…

在自己的电脑上搭建我的世界Java版服务器

很多朋友,喜欢玩Minecraft,也希望搭建一个服务器,用于和小伙伴联机; 并且,拥有服务器后,即使所有玩家都下线,“世界”依旧在运行,玩家可以随时参与其中,说不定一上线&am…

2. 音视频H264

视频软件基本流程 1.什么是H264 H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准 H265又名高…

我国含氢硅油产量逐渐增长 市场集中度较高

我国含氢硅油产量逐渐增长 市场集中度较高 含氢硅油又称为烷基硅油,是一种有机硅化合物,在常温常压下多表现为一种无色透明液体。与其他类型的硅油相比,含氢硅油具有良好的滋润性、疏水性、润滑性、化学稳定性等优点。经过多年发展&#xff…

【C语言】10.C语言指针(5)

文章目录 1.sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen的对⽐ 2.数组和指针笔试题解析2.1 ⼀维数组2.2 字符数组2.3 ⼆维数组 3.指针运算笔试题解析3.1 题⽬13.2 题⽬23.3 题⽬33.4 题⽬43.5 题⽬53.6 题⽬63.7 题⽬7 1.sizeof和strlen的对比 1.1 sizeof …

正则表达式:从左到右一个个去匹配,api帮助文档搜:Pattern

正则匹配字符: \:在java里面是转义字符的意思,在java里面可以理解为:\\\ “你”匹配一个:. a匹配一个:. 匹配多个的情况: 正则表达式练习: 忽略大小写的书写方式:(?i) 正则表达式在…

【仿真建模-anylogic】Dynamic Event原理解析

Author:赵志乾 Date:2024-06-12 Declaration:All Right Reserved!!! 1. 类图 2. 原理解析 EventOriginator是Anylogic中各类事件的父类,对外暴露的接口主要有: 函数功能boolean isActive()判定…

泛微OA E9 浏览框显示的数据根据表单字段过滤

一、实现效果:如图所示,字段“物品名称”浏览框显示的数据根据“类型”字段进行过滤。 二、实现方法: 1、建模引擎-应用建模-浏览框-浏览框列表中单击“办公耗材”-“浏览框列表”-“操作”-“编辑” 2、sql语句中根据OA自带是示例增加where…

autoware lidar-centerpoint 点云在rviz上叠加显示问题

在使用自采数据包放入autoware中的lidar_centerpoint上进行检测时发现,在rviz可视化上出现问题:多帧点云在一个位置上不断叠加,不能正常随时间显示。 如下图所示: 解决方法: 出现上述问题是因为autoware默认使用的是…

多用户竞拍商城系统 挂售转卖竞拍商城系统源码 竞拍系统 竞拍系统开发定制 转拍闪拍系统 后端PHP+前端UNIAPP源码+教程

挂售转卖竞拍商城系统源码/竞拍系统/转拍闪拍系统/后端PHP前端UNIAPP源码 玩法简介 ①、后台可添加商品进行挂单 ②、后台设置场次以及场次开始时间 ③、用户抢单 ④、抢单以后可选择提货或者转售 ⑤、玩家寄售需按照后台设置百分比进行加价 ⑥、玩家寄售需支付手续费(余额支付…

图的存储表示

目录 概述 图的定义 图的存储结构 1)邻接矩阵 2)邻接表 3)十字链表 4)邻接多重表 概述 数据结构分为两类,一类是具有递归结构的数据结构,也就是可以给出一个递归定义的数据结构,一类是非递归结构…

你好!Python

目录 写在前面 编辑推荐 内容简介 作者简介 前言 推荐理由 写在后面 写在前面 本期博主给大家推荐一本全新出版的Python图书,感兴趣的小伙伴一起来看看吧! 《你好!Python 全彩印刷 从零开始学 语言轻松幽默 版式精美 视频讲解 提供代…

成功的管理者必做的10件事

管理者是团队的核心,他们不仅要有出色的领导能力,还要具备应对各种挑战的智慧和勇气。以下是成功的管理者必做的10件事: 1、设定明确的目标 管理者要为团队设定清晰、可衡量且具有挑战性的目标,这些目标不仅与组织的长期愿景相…

高考志愿填报,如何分析自己的优势特长?

据不完全统计,80%的高三学生,不清楚自己要报什么专业,以及将来从事哪种职业?有的人则是完全听从父母的安排,有人听老师的建议,有人追热门,有人查什么专业可以拿高薪.... 而现实就是&#xff1a…

水产养殖监测站的工作原理

TH-LSZ06水产养殖监测站是保障水产质量安全的重要设施,监测水产养殖环境:负责监测水产养殖基地的水质、底泥、养殖物质等,确保养殖环境的适宜性和安全性。通过对养殖环境的实时监测,可以及时发现和预警水产疾病和污染问题&#xf…

pdf文件怎么改变大小?在线快速压缩pdf的方法

pdf作为一种常用的文件格式,使用这种文件类型的好处在于不仅拥有更好的兼容性,还可以设置密码来保证安全性,防止未授权用户查看内容,所以现在导出文件展示都会采用这种格式的来做内容展示。当遇到pdf文件过大问题时,想…

Unity | Tilemap系统

目录 一、准备工作 1.插件导入 2.资源导入 二、相关组件介绍 1.Grid组件 2.Tilemap组件 3.Tile 4.Tile Palette 5.Brushes 三、动态创建地图 四、其他功能 1.移动网格上物体 2.拖拽缩放地图 Unity Tilemap系统为2D游戏开发提供了一个直观且功能强大的平台&#xff…

知网学术期刊《数学之友》投稿难度大吗?

知网学术期刊《数学之友》投稿难度的大小,实际上取决于多个因素的综合考量,包括论文的质量、研究方向的匹配度、期刊的审稿标准以及投稿者的学术背景等。 首先,从期刊的定位和特点来看,《数学之友》作为一份专注于数学领域的学术期…