docker-compose部署一款老牌apm监控软件-- pinpoint(需定制docker镜像)
镜像redis下载超时镜像pinpoint-batch下载超时容器pinpoint-mysql启动失败修改完docker-compose.yml后再次执行 docker-compose up -d 启动所有的镜像。可以看到, 最新版本的pinpoint比之前的组件变多了。访问pinpoint-web(8080端口),http://localhost:8080/这是因为在docker-compose
一、背景
公司测试环境需要重新部署一套apm监控软件,选择的是我们开发都使用过的pinpoint,当然首选使用docker-compose部署。
可是,在部署的过程中,却遇到了不少问题。
无法直接使用官网提供的docker-compose.yml,需要我们进行一个改动。
本文基于官方提供的部署方式,修改并部署。
二、官方部署
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示例程序。
所以说, 在正式环境下, 我们是需要删掉上述两段。
删除后的容器列表,见下:
更多推荐
所有评论(0)