PostHog本地开发环境全栈Docker部署指南
2025-07-05 05:08:55作者:郜逊炳
概述
PostHog是一款开源的现代产品分析平台,为开发者提供用户行为分析、会话回放、功能标志等能力。本文重点介绍如何使用Docker Compose配置完整的PostHog本地开发环境,帮助开发者快速搭建包含所有依赖服务的开发环境。
核心服务架构
PostHog的本地开发环境由多个相互依赖的服务组成,主要分为以下几类:
- 基础数据存储服务:PostgreSQL、Redis、ClickHouse
- 消息队列系统:Kafka + Zookeeper
- 应用服务:Web服务、Worker、Capture服务等
- 辅助服务:邮件开发服务器、对象存储、Webhook测试器等
- 可观测性工具:OpenTelemetry Collector + Jaeger
详细服务配置解析
1. 数据存储服务
PostgreSQL (db)
- 端口映射:5432:5432
- 作为主数据库存储用户、团队等核心数据
Redis
- 端口映射:6379:6379
- 用于缓存和临时数据存储
ClickHouse
- 多端口映射:8123(HTTP)、9000(Native)、9440(HTTPS)、9009(Interserver)
- 挂载了多个配置文件:
- 主配置文件config.xml
- 默认配置default.xml
- 用户配置users-dev.xml
- UDF配置user_defined_function.xml
- 依赖Kafka和Zookeeper服务
2. 消息队列系统
Zookeeper
- 为Kafka提供协调服务
Kafka
- 端口映射:9092:9092
- 作为事件总线处理分析数据
3. 核心应用服务
Web服务
- 端口映射:8000:8000
- 挂载本地代码目录实现热更新
- 依赖数据库、Redis、ClickHouse和Kafka
- 配置了调试模式和本地JS资源路径
Worker服务
- 处理后台异步任务
- 同样挂载本地代码目录
- 配置了调试模式和插件服务器空闲设置
Capture服务
- 处理事件捕获
- 依赖Redis和Kafka
Replay-Capture服务
- 处理会话回放数据
- 依赖Redis和Kafka
4. 辅助服务
对象存储(ObjectStorage)
- 模拟S3兼容存储
- 端口映射:19000(API)、19001(管理)
邮件开发服务器(Maildev)
- 端口映射:1080(Web界面)、1025(SMTP)
- 方便测试邮件功能
Webhook测试器
- 端口映射:2080
- 用于测试出站Webhook
5. 工作流与监控
Temporal工作流引擎
- 端口映射:7233(API)、8081(UI)
- 用于管理长时间运行的工作流
OpenTelemetry Collector
- 收集分布式追踪数据
- 与Jaeger集成
Jaeger
- 提供分布式追踪可视化
开发环境特点
- 全容器化:所有服务都运行在容器中,与主机环境隔离
- 调试友好:多数服务配置了DEBUG=1环境变量
- 代码热加载:Web和Worker服务挂载本地代码目录
- 完整依赖:包含开发所需的所有依赖服务
- 可观测性:内置OpenTelemetry和Jaeger支持
使用建议
- 开发时重点关注web、worker和plugins服务,它们直接运行应用代码
- 利用maildev和webhook-tester调试邮件和Webhook功能
- 通过Jaeger界面分析请求链路
- 修改ClickHouse配置时注意对应的挂载文件位置
- 数据库迁移通过migrate服务处理
这套配置为PostHog开发者提供了完整的本地环境,可以模拟生产环境的绝大多数功能,同时保持开发调试的便利性。