Twenty项目Docker Compose部署指南
2025-07-05 03:58:28作者:仰钰奇
概述
Twenty是一个现代化的CRM系统,采用微服务架构设计。本文档将详细介绍如何使用Docker Compose部署Twenty项目,帮助开发者和系统管理员快速搭建完整的Twenty运行环境。
核心服务架构
Twenty的Docker Compose配置定义了四个核心服务组件:
- server服务:主应用服务,处理HTTP请求
- worker服务:后台任务处理服务
- db服务:PostgreSQL数据库服务
- redis服务:Redis缓存服务
详细配置解析
server服务配置
server服务是Twenty的核心应用服务,主要配置包括:
- 端口映射:将容器内的3000端口映射到主机的3000端口
- 数据卷:挂载server-local-data卷用于持久化存储
- 环境变量:
PG_DATABASE_URL
:PostgreSQL数据库连接字符串SERVER_URL
:服务访问URLREDIS_URL
:Redis连接URLSTORAGE_*
:存储相关配置(支持S3)APP_SECRET
:应用加密密钥
健康检查配置了HTTP端点检查,确保服务启动成功后才接受流量。
worker服务配置
worker服务负责处理后台任务,配置与server服务类似,但:
- 使用
yarn worker:prod
命令启动 - 禁用了数据库迁移和定时任务注册(由server服务处理)
- 依赖server和db服务的健康状态
db服务配置
PostgreSQL数据库服务配置:
- 使用PostgreSQL 16官方镜像
- 数据持久化到db-data卷
- 配置了用户认证信息
- 健康检查使用
pg_isready
命令验证数据库可用性
redis服务配置
Redis服务配置相对简单:
- 使用官方Redis镜像
- 配置了内存策略为"noeviction"(不淘汰数据)
- 默认端口6379
环境变量详解
Twenty项目通过环境变量实现灵活配置,主要分为以下几类:
数据库配置
PG_DATABASE_USER
:PostgreSQL用户名(默认postgres)PG_DATABASE_PASSWORD
:PostgreSQL密码(默认postgres)PG_DATABASE_HOST
:数据库主机(默认db)PG_DATABASE_PORT
:数据库端口(默认5432)
应用配置
APP_SECRET
:应用加密密钥(必须修改)SERVER_URL
:服务访问URL(必须配置)DISABLE_DB_MIGRATIONS
:禁用数据库迁移DISABLE_CRON_JOBS_REGISTRATION
:禁用定时任务注册
存储配置
STORAGE_TYPE
:存储类型STORAGE_S3_*
:S3存储相关配置(区域、名称、端点)
第三方服务集成(注释状态)
配置文件中包含了多种第三方服务集成的配置选项,如:
- Google认证和日历服务
- Microsoft认证和日历服务
- 邮件服务配置
这些配置默认被注释,需要时取消注释并填写相应值即可启用。
部署建议
-
安全配置:
- 务必修改
APP_SECRET
环境变量 - 生产环境不应使用默认的数据库凭证
- 务必修改
-
存储方案:
- 开发环境可使用本地卷存储
- 生产环境建议配置S3存储
-
健康检查:
- 默认健康检查配置适合大多数场景
- 高负载环境可调整检查间隔和重试次数
-
资源限制:
- 生产环境应为各服务添加资源限制(CPU/内存)
常见问题解决
-
服务启动顺序问题:
- 使用
depends_on
和condition
确保依赖服务就绪 - 数据库健康检查可避免连接问题
- 使用
-
端口冲突:
- 如3000端口被占用,可修改
ports
配置
- 如3000端口被占用,可修改
-
存储权限问题:
- 确保Docker有权限写入配置的数据卷
总结
Twenty项目的Docker Compose配置提供了完整的开发和生产环境部署方案。通过合理配置环境变量,可以轻松适配不同部署场景。理解各服务组件的作用和相互关系,有助于排查部署过程中的问题,也为定制化部署提供了基础。