这是我第一次使用 Firebase 托管。我正在按照 this 教程来托管我的示例 FastAPI 应用程序。但我无法访问我在应用程序中设置的端点。我很确定我搞砸了构建命令。我不知道该放什么。
这是我的 FastAPI 应用程序 -
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get('/hello')
async def generate_avatar(request: Request):
return JSONResponse(content={"message": "Success"}, status_code=200)
这是 Firebase CLI 生成的
firebase-hosting-merge.yml
文件 -
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- main
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: 'pip install --no-cache-dir --upgrade -r requirements.txt && gunicorn -k uvicorn.workers.UvicornWorker app.main:app -D'
- 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
我还编写了一个 Dockerfile,并尝试在合并工作流程文件中使用 docker build 命令来构建此映像,而不是直接运行 python 命令,但我仍然无法让它工作。
FROM python:3.9-slim
WORKDIR /app
# Copy requirements.txt
COPY ./requirements.txt /app/requirements.txt
# Install dependencies
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
# Copy rest of the files
COPY ./app /app
CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "app.main:app", "-d"]
无论我如何尝试访问
/hello
端点,我都会不断收到 404 响应。如果有人能帮助我解决这个问题,我将非常感激。
谢谢你。
Firebase 托管适用于静态文件。 Firebase 函数用于运行 HTTP 端点。
这是您要使用的库:https://github.com/firebase/firebase-functions-python
它应该引导您进行可能需要的任何辅助设置。