首页
/ Papercups项目Docker Compose部署指南

Papercups项目Docker Compose部署指南

2025-07-07 08:00:13作者:管翌锬

概述

Papercups是一个开源的实时客服聊天系统,本文将从技术角度详细解析其Docker Compose部署方案,帮助开发者快速搭建自己的客服系统环境。

核心服务架构

Papercups的Docker Compose配置主要包含两个核心服务:

  1. Papercups主服务:基于Elixir/Phoenix框架构建的Web应用
  2. 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"

重要变量说明

  1. SECRET_KEY_BASE:Phoenix框架的安全密钥,用于加密敏感数据

    • 生产环境必须替换为自定义强密码
    • 建议长度至少64字节
  2. REACT_APP_URL:前端应用访问地址

    • 部署到生产环境时需要修改为实际域名
  3. REACT_APP_FILE_UPLOADS_ENABLED:控制文件上传功能开关

部署建议

  1. 安全配置

    • 修改默认数据库密码
    • 替换示例SECRET_KEY_BASE
    • 生产环境考虑启用数据库SSL
  2. 性能调优

    • 可根据业务量调整服务资源限制
    • 考虑添加Redis缓存层
  3. 高可用方案

    • 配置数据库持久化卷
    • 设置服务健康检查

常见问题排查

  1. 启动失败

    • 检查数据库服务是否正常启动
    • 确认端口未被占用
  2. 数据库连接问题

    • 验证DATABASE_URL格式正确
    • 检查网络连接
  3. 前端无法访问

    • 确认REACT_APP_URL配置正确
    • 检查防火墙设置

进阶配置

对于生产环境部署,建议考虑以下增强配置:

  1. 添加Nginx反向代理
  2. 配置HTTPS证书
  3. 设置定期数据库备份
  4. 实现日志集中管理

通过本文的详细解析,开发者可以全面理解Papercups的Docker部署架构,并根据实际需求进行定制化配置。