将 React 应用程序部署到生产环境:使用 Traefik 反向代理的完整 Docker 设置
在本地构建 React 应用程序很简单。将其正确部署到生产服务器?这才是大多数开发者遇到意想不到的障碍的地方。本指南记录了一次真实的部署调试过程,在这个过程中一切看起来都配置正确——容器运行、Traefik 标签设置、DNS 解析正常——但应用程序持续返回404错误。
今天,我们将介绍在本地构建 React 应用程序并将其部署到生产 Docker 服务器的完整过程,包括正确的反向代理配置、自动 SSL 和专业域名路由。这种方法建立在我们自托管解决方案的理念之上——类似于我们展示的如何自托管 n8n 进行工作流自动化以及构建多租户开发栈以实现完全运营控制。
传统 React 部署的问题
大多数 React 部署教程跳过了关键的生产细节。您会找到展示 npm run build 和将文件复制到 nginx 的指南,但它们很少涵盖:
配置冲突:
- 覆盖全局重定向的自定义 HTTP 路由器
- 导致静默失败的 Traefik 标签语法错误
- 健康检查中的 IPv6 与 IPv4 绑定问题
- 产生404错误的缺失服务端口映射
资源管理:
- 磁盘已满导致容器注册失败
- 不必要的构建产物造成 Docker 镜像膨胀
- 低效的缓存策略拖慢部署
- 内存限制影响构建性能
生产就绪性:
- 正确的 SSL 证书自动化
- 零停机部署策略
- 健康检查配置
- 日志记录和监控集成
结果?花费数小时调试为什么一个在本地完美运行的应用在生产环境中返回神秘的404错误,即使“一切看起来都正确”。
本指南涵盖了使用 Vite 构建工具、Docker 多阶段构建、Nginx 提供静态文件以及 Traefik 反向代理进行 SSL 终止和路由的完整生产部署过程。从本地开发到生产服务器的每个步骤都有详细记录,包括我们在实际部署中遇到和解决的常见陷阱。
有关完整的技术实现细节,包括 Dockerfile、docker-compose 配置、Nginx 配置和 Traefik 标签设置,请参阅原始英文版本中的完整代码示例。