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

一、背景

公司测试环境需要重新部署一套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示例程序。

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

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

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 09:28:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 09:28:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 09:28:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 09:28:02       20 阅读

热门阅读

  1. 在.NET Core 中处理并发冲突方法

    2024-06-13 09:28:02       5 阅读
  2. Jtti:ubuntu文件系统根目录磁盘空间不足怎么办

    2024-06-13 09:28:02       4 阅读
  3. 深入理解 Spring Boot 中的 MediaType

    2024-06-13 09:28:02       7 阅读
  4. 设计模式的种类及其应用场景

    2024-06-13 09:28:02       3 阅读
  5. Bash脚本:删除根目录内的所有node_modules文件夹

    2024-06-13 09:28:02       6 阅读
  6. webpack插件

    2024-06-13 09:28:02       5 阅读
  7. DSP28335模块配置模板系列——EQEP模块配置模板

    2024-06-13 09:28:02       7 阅读
  8. git 常用命令

    2024-06-13 09:28:02       9 阅读