pgrok/pgrok项目Docker Compose部署指南
2025-07-09 07:52:50作者:董宙帆
项目概述
pgrok/pgrok是一个内网穿透工具,类似于ngrok,它允许开发者将本地服务暴露到公网。通过Docker Compose部署可以快速搭建pgrok服务端(pgrokd)及其依赖的PostgreSQL数据库。
部署架构解析
这个docker-compose.yml文件定义了两个核心服务:
- pgrokd服务:pgrok的核心服务端组件
- PostgreSQL服务:pgrokd的后端数据库存储
服务配置详解
pgrokd服务配置
pgrokd:
image: "ghcr.io/pgrok/pgrokd:latest"
restart: always
volumes:
- "./pgrokd:/var/opt/pgrokd"
ports:
- "3320:3320"
- "3000:3000"
- "2222:2222"
depends_on:
- postgres
关键配置说明:
- 镜像版本:使用最新的pgrokd官方镜像
- 重启策略:设置为always确保服务异常退出后自动重启
- 数据卷:将本地./pgrokd目录挂载到容器内的/var/opt/pgrokd,用于持久化配置数据
- 端口映射:
- 3320端口:可能是pgrokd的管理API端口
- 3000端口:通常用于HTTP隧道
- 2222端口:通常用于TCP隧道或SSH隧道
- 依赖关系:明确声明依赖PostgreSQL服务
PostgreSQL服务配置
postgres:
image: postgres
restart: always
volumes:
- "pg_data:/var/lib/postgresql/data"
environment:
POSTGRES_DB: pgrokd
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
关键配置说明:
- 数据持久化:使用命名卷pg_data持久化数据库数据
- 环境变量:
- 指定数据库名称为pgrokd
- 用户名和密码通过环境变量注入(需要提前设置)
- 自动重启:同样配置为always确保高可用
部署前准备
-
创建.env文件,设置PostgreSQL凭据:
POSTGRES_USER=your_username POSTGRES_PASSWORD=your_strong_password
-
确保Docker和Docker Compose已安装并正常运行
部署步骤
- 将docker-compose.yml和.env文件放在同一目录
- 创建本地目录用于pgrokd数据持久化:
mkdir pgrokd
- 启动服务:
docker-compose up -d
验证部署
- 检查容器状态:
docker-compose ps
- 查看pgrokd日志:
docker-compose logs pgrokd
- 测试端口连通性:
curl http://localhost:3000
运维建议
- 数据备份:定期备份pg_data卷和本地pgrokd目录
- 版本升级:更新镜像版本时,先停止服务再重新部署
- 安全配置:
- 修改默认端口
- 配置防火墙规则
- 使用TLS加密通信
常见问题排查
- 端口冲突:确保3320、3000和2222端口未被占用
- 权限问题:检查pgrokd目录的读写权限
- 数据库连接失败:验证.env文件中的凭据是否正确
通过以上配置和步骤,您可以快速搭建一个功能完整的pgrok服务端环境,为内网穿透服务提供稳定支持。