Webhook.site 项目 Docker 部署指南
2025-07-07 07:38:36作者:余洋婵Anita
Webhook.site 是一个用于测试和调试 Webhook 请求的实用工具,它允许开发者轻松捕获、检查和重放 Webhook 请求。本文将详细介绍如何使用 Docker Compose 部署 Webhook.site 项目。
项目架构概述
Webhook.site 采用典型的 Laravel 应用架构,包含以下核心组件:
- 主应用服务:基于 Laravel 框架构建的 Webhook 接收和处理服务
- Redis 服务:用于队列处理、缓存和实时通信
- Laravel Echo 服务器:处理 WebSocket 实时通信
Docker Compose 配置详解
主应用服务 (webhook)
webhook:
container_name: "webhook-site"
image: "webhooksite/webhook.site"
command: php artisan queue:work --daemon --tries=3 --timeout=10
ports:
- "8084:80"
environment:
- APP_ENV=dev
- APP_DEBUG=true
- APP_URL=http://localhost:8084
- APP_LOG=errorlog
- DB_CONNECTION=sqlite
- REDIS_HOST=redis
- BROADCAST_DRIVER=redis
- CACHE_DRIVER=redis
- QUEUE_DRIVER=redis
- ECHO_HOST_MODE=path
depends_on:
- redis
关键配置说明:
- 队列工作进程:通过
command
指定了 Laravel 队列工作进程,采用守护进程模式运行,最多重试3次,超时时间为10秒 - 端口映射:将容器内的80端口映射到主机的8084端口
- 环境变量:
APP_ENV=dev
:设置应用环境为开发模式APP_DEBUG=true
:启用调试模式DB_CONNECTION=sqlite
:使用 SQLite 作为数据库- 各种驱动配置为使用 Redis,包括广播、缓存和队列
Redis 服务
redis:
container_name: "webhook-redis"
image: "redis:alpine"
Redis 服务使用轻量级的 Alpine Linux 镜像,作为整个应用的缓存、队列和实时通信的基础服务。
Laravel Echo 服务器
laravel-echo-server:
container_name: "laravel-echo-server"
image: "webhooksite/laravel-echo-server"
command:
- laravel-echo-server
- start
- --force
environment:
- LARAVEL_ECHO_SERVER_AUTH_HOST=http://webhook
- LARAVEL_ECHO_SERVER_HOST=0.0.0.0
- LARAVEL_ECHO_SERVER_PORT=6001
- ECHO_REDIS_PORT=6379
- ECHO_REDIS_HOSTNAME=redis
- ECHO_PROTOCOL=http
- ECHO_ALLOW_CORS=true
- ECHO_ALLOW_ORIGIN=*
- ECHO_ALLOW_METHODS=*
- ECHO_ALLOW_HEADERS=*
关键配置说明:
- 认证主机:指向主应用服务 (
http://webhook
) - 连接配置:监听所有网络接口 (0.0.0.0) 的6001端口
- Redis 连接:连接到 Redis 服务
- CORS 配置:宽松的跨域策略,允许所有来源、方法和头信息
部署步骤
-
安装 Docker 和 Docker Compose:确保系统已安装最新版本的 Docker 和 Docker Compose
-
创建 docker-compose.yml 文件:将上述配置保存为 docker-compose.yml 文件
-
启动服务:在包含 docker-compose.yml 的目录中运行以下命令
docker-compose up -d
-
访问应用:服务启动后,通过
http://localhost:8084
访问 Webhook.site 应用
生产环境建议
对于生产环境部署,建议进行以下调整:
- 修改
APP_ENV=production
和APP_DEBUG=false
- 考虑使用 MySQL 或 PostgreSQL 替代 SQLite
- 配置适当的 CORS 策略,而不是允许所有来源
- 设置 HTTPS 协议
- 配置适当的日志记录和监控
常见问题排查
- 端口冲突:如果8084端口已被占用,修改 ports 配置中的主机端口
- Redis 连接问题:确保 Redis 服务先于应用服务启动
- 队列处理失败:检查日志确认队列工作进程是否正常运行
通过以上配置和说明,开发者可以轻松地在本地或服务器上部署 Webhook.site 项目,用于 Webhook 相关的开发和测试工作。