使用 Docker 构建多租户开发栈:可扩展客户部署的完整设置
如何创建基于模板的多租户开发环境,包含16个容器化服务,可离线工作同时通过基于子域名的路由保持在线可访问。
管理多个客户的开发环境通常意味着在复杂的手动设置和昂贵的企业解决方案之间做选择。本文记录了我们如何使用 Docker 构建了一个可重复的多租户开发栈,解决了这两个问题。
该栈包含16个容器化服务,涵盖了现代 Web 开发中需要的所有关键组件:
- Web 服务器:Nginx 用于静态文件和反向代理
- 应用服务器:PHP-FPM 用于 WordPress/WooCommerce 工作负载
- 数据库:MariaDB 用于结构化数据存储
- 缓存:Redis 用于对象缓存和会话管理
- 搜索:Elasticsearch 用于高级搜索功能
- 邮件:Mailhog 用于开发中的邮件测试
- 反向代理:Traefik 用于基于子域名的路由和 SSL 终止
该架构的关键特性包括:
基于模板的部署:新客户环境可以通过复制模板并更改几个配置变量在几分钟内创建,而不是几小时或几天。
离线/在线双模式:该栈可以完全离线工作进行本地开发,同时也可以通过 Traefik 的基于子域名的路由在线访问,使其适合远程协作和客户演示。
隔离性:每个客户的环境完全隔离——拥有自己的数据库、缓存和存储卷——同时共享基础设施组件以提高效率。
可扩展性:添加新客户只需要创建一个新的 docker-compose 文件和 Traefik 配置,无需修改现有的客户环境。
本指南包含完整的 Docker Compose 配置、Traefik 路由设置、Nginx 虚拟主机配置和环境变量管理的详细代码示例。有关完整的技术实现,请参阅原始英文版本。