You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于React+FastAPI的全栈Web应用如何部署到DigitalOcean生产环境?

现有配置生产可用性评估

现有配置是开发环境配置,绝对不能直接用于生产部署,存在以下核心问题:

  • 前端使用npm start启动React开发服务器,仅适用于本地调试,性能极低、存在调试接口泄露风险,生产环境必须将React项目build为静态文件后托管。
  • API服务的uvicorn启动参数带--reload,属于开发调试功能,会监听文件变更自动重启服务,稳定性和性能都不符合生产要求,需移除该参数,高并发场景建议额外搭配Gunicorn做进程管理。
  • Nginx配置存在语法错误:server_name domain.com www.domain.com末尾缺少分号,会导致Nginx启动失败;另外location /api/的转发规则默认会将/api/前缀一同转发给后端API,若你的FastAPI接口没有统一加/api前缀,会统一返回404,可修改为proxy_pass http://api/;(末尾加斜杠自动去掉前缀),或者给FastAPI全局配置prefix="/api"。
  • 所有代码目录都通过volume挂载到宿主机,生产环境需将代码直接构建到镜像内,避免宿主机文件意外变更影响服务运行,也方便镜像版本管理。
  • PostgreSQL没有配置持久化volume,容器销毁后所有数据会直接丢失,需给db服务新增volume映射到宿主机持久化目录,例如添加- ./pgdata:/var/lib/postgresql/data到volumes配置中。
  • 依赖顺序配置错误:Splash是API服务的依赖项,当前配置写的是Splash依赖API/前端,可能出现API启动完成但Splash未就绪,爬虫调用失败的问题,需调整为API依赖Splash。
数据库与pgadmin部署建议
  • PostgreSQL完全可以放在Docker中运行,只要做好持久化配置、定期备份,小体量项目使用Docker部署比直接安装在宿主机更易迁移、维护成本更低。
  • pgadmin不要在生产环境暴露到公网:要么移除pgadmin的端口映射,仅允许容器内网访问,需要用的时候临时开启;要么增加Nginx基础身份验证+IP白名单限制,仅允许你自己的IP访问,避免被暴力破解导致数据泄露。
DigitalOcean上线操作步骤
  1. 选购Droplet:建议选择至少2核4G配置的Droplet,系统选择最新版Ubuntu LTS,提前在Droplet内安装好docker和docker-compose。
  2. 上传项目代码:通过git或者scp将项目代码上传到Droplet,注意不要上传node_modules、__pycache__等无关文件。
  3. 修改生产配置:
    • 调整前端Dockerfile为多阶段构建,先完成React项目的build,再将生成的静态文件拷贝到Nginx镜像内托管,移除开发服务器相关配置。
    • 移除API服务的--reload启动参数,取消代码目录的volume挂载,将代码直接构建到API镜像中。
    • 给PostgreSQL添加持久化volume,调整Splash和API的依赖顺序。
    • 修复Nginx配置的语法错误,添加HTTPS配置,可使用Let's Encrypt申请免费SSL证书,将所有80端口的HTTP请求重定向到443端口。
  4. 配置安全规则:在DigitalOcean后台的防火墙配置中,仅开放80、443端口和SSH需要的22端口,其余端口全部禁止公网访问,避免PostgreSQL、Splash等内部服务被攻击。
  5. 启动服务:执行docker-compose up -d启动所有服务,通过docker logs 容器名检查各服务运行日志无报错后,访问你的域名测试前端、API接口、爬虫功能是否正常运行。
  6. 后续运维配置:配置Docker日志轮转避免日志占满磁盘,定期备份PostgreSQL数据,添加服务器资源、服务运行状态监控,及时处理异常。

内容的提问来源于stack exchange,提问作者LifeChaser97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:42:04