Papercups项目Docker Compose部署指南
2025-07-07 08:00:13作者:管翌锬
概述
Papercups是一个开源的实时客服聊天系统,本文将从技术角度详细解析其Docker Compose部署方案,帮助开发者快速搭建自己的客服系统环境。
核心服务架构
Papercups的Docker Compose配置主要包含两个核心服务:
- Papercups主服务:基于Elixir/Phoenix框架构建的Web应用
- PostgreSQL数据库服务:用于存储所有聊天数据和系统配置
详细配置解析
Papercups主服务配置
papercups:
image: papercups/papercups:latest
restart: always
ports:
- "3000:3000" # 前端服务端口
- "4000:4000" # API服务端口
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && echo 'running' && /entrypoint.sh run"
关键点说明:
- 使用
latest
标签获取最新镜像 - 自动重启策略确保服务高可用
- 启动命令包含数据库初始化和迁移步骤
- 10秒延迟等待数据库服务就绪
数据库服务配置
db:
image: postgres:alpine
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: postgres
技术细节:
- 使用轻量级Alpine版PostgreSQL镜像
- 默认密码为postgres(生产环境必须修改)
- 暴露标准PostgreSQL端口
环境变量详解
Papercups主服务配置了多个关键环境变量:
environment:
DATABASE_URL: "ecto://postgres:postgres@db/postgres"
SECRET_KEY_BASE: "dvPPvOjpgX2Wk8Y3ONrqWsgM9ZtU4sSrs4l/5CFD1sLm4H+CjLU+EidjNGuSz7bz"
BACKEND_URL: "localhost"
MIX_ENV: "prod"
REQUIRE_DB_SSL: "false"
REACT_APP_FILE_UPLOADS_ENABLED: 1
REACT_APP_URL: "app.papercups.io"
重要变量说明:
-
SECRET_KEY_BASE
:Phoenix框架的安全密钥,用于加密敏感数据- 生产环境必须替换为自定义强密码
- 建议长度至少64字节
-
REACT_APP_URL
:前端应用访问地址- 部署到生产环境时需要修改为实际域名
-
REACT_APP_FILE_UPLOADS_ENABLED
:控制文件上传功能开关
部署建议
-
安全配置:
- 修改默认数据库密码
- 替换示例SECRET_KEY_BASE
- 生产环境考虑启用数据库SSL
-
性能调优:
- 可根据业务量调整服务资源限制
- 考虑添加Redis缓存层
-
高可用方案:
- 配置数据库持久化卷
- 设置服务健康检查
常见问题排查
-
启动失败:
- 检查数据库服务是否正常启动
- 确认端口未被占用
-
数据库连接问题:
- 验证DATABASE_URL格式正确
- 检查网络连接
-
前端无法访问:
- 确认REACT_APP_URL配置正确
- 检查防火墙设置
进阶配置
对于生产环境部署,建议考虑以下增强配置:
- 添加Nginx反向代理
- 配置HTTPS证书
- 设置定期数据库备份
- 实现日志集中管理
通过本文的详细解析,开发者可以全面理解Papercups的Docker部署架构,并根据实际需求进行定制化配置。