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

FastAPI应用部署Firebase Hosting遇404:构建命令问题求助

解决Firebase Hosting部署FastAPI后/hello端点404的问题

核心问题

Firebase Hosting是静态资源托管服务,无法直接运行FastAPI这类后端服务。你之前在GitHub Action中启动gunicorn或构建Docker镜像的操作,并没有将服务部署到可运行后端的环境(如Cloud Run),导致Hosting无法定位API端点。

正确部署流程

1. 将FastAPI部署到Cloud Run

Docker方式(推荐)

你的Dockerfile只需移除后台运行参数-d,并指定Cloud Run要求的8080端口:

FROM python:3.9-slim

WORKDIR /app

COPY ./requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY ./app /app

# Cloud Run需前台运行,且监听8080端口
CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "app.main:app", "--bind", "0.0.0.0:8080"]

2. 配置Firebase Hosting重写规则

在项目根目录创建或修改firebase.json,添加规则将API请求转发到Cloud Run服务:

{
  "hosting": {
    "public": "public", // 可保留空的public目录用于存放静态资源
    "rewrites": [
      {
        "source": "/hello", // 仅转发/hello路径,或用"**"转发所有请求
        "run": {
          "serviceId": "your-cloud-run-service-name", // 替换为你的Cloud Run服务名
          "region": "us-central1" // 替换为服务所在区域
        }
      }
    ]
  }
}

3. 修正GitHub Action工作流

原工作流未正确部署后端服务,需调整为先部署Cloud Run,再部署Hosting:

name: Deploy FastAPI + Firebase Hosting
'on':
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # 部署到Cloud Run
      - name: Deploy to Cloud Run
        uses: google-github-actions/deploy-cloudrun@v2
        with:
          service: fastapi-service # 替换为你的Cloud Run服务名
          region: us-central1 # 替换为服务区域
          source: .
          credentials: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} # 需在GitHub Secrets中配置GCP服务账号密钥

      # 部署Firebase Hosting
      - name: Deploy to Firebase Hosting
        uses: FirebaseExtended/action-hosting-deploy@v0
        with:
          repoToken: ${{ secrets.GITHUB_TOKEN }}
          firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_AGENT_AVATAR_GENERATION }}
          channelId: live
          projectId: agent-avatar-generation

4. 验证步骤

  1. 先访问Cloud Run提供的服务URL,加上/hello,确认返回{"message": "Success"}
  2. 等待Hosting部署完成后,访问Firebase域名的/hello端点,验证是否正常响应

额外注意事项

  • 确认FastAPI文件结构:若主文件为app/main.py,app.main:app正确;若主文件是根目录的main.py,需改为main:app
  • 重写规则生效可能需要1-2分钟,部署后稍作等待再测试
  • 确保GCP服务账号拥有Cloud Run Admin、Cloud Build Editor等必要权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:50:21