我在一个Azure应用服务中部署了一个基于私有Docker Hub仓库中Docker镜像的应用。配置好示例后,我根据需要通过FTPS上传了/wwwroot文件夹中的应用文件。
在第一时刻,它的确定,我的API有1个端点和工作正常.在此之后,我改变了文件通过FTPS和添加一个端点在路由器,但我当我运行示例,新的端点找不到.
我看了一下示例中的文件,似乎没问题,这是我的路由文件:
from typing import Union
from fastapi import APIRouter
from fastapi import Depends
from fastapi import HTTPException
from ..extensions.database import get_resp_dict
from ..extensions.database import get_sla_dict
from ..extensions.schemas import TaskResponsibleResponse
from ..extensions.schemas import TaskResponsibleSetterSchema
from ..extensions.schemas import TaskSlaResponse
from ..extensions.schemas import TaskSlaSetterSchema
from ..extensions.security import authenticate_request
router = APIRouter(prefix="/flow/contractmanager", tags=["Flows"])
@router.post("/")
def get_task_responsible(
request: TaskResponsibleSetterSchema,
resp_dict: dict = Depends(get_resp_dict),
token: dict = Depends(authenticate_request),
) -> Union[TaskResponsibleResponse, None]:
"""Get the task responsible by directory"""
try:
task_responsible = resp_dict[request.directory]
except KeyError | Exception:
raise HTTPException(400, detail="Directory not found")
return TaskResponsibleResponse(directory=request.directory, responsible=task_responsible)
@router.post("/sla")
def set_task_sla(
request: TaskSlaSetterSchema, sla_dict: dict = Depends(get_sla_dict), token: dict = Depends(authenticate_request)
) -> Union[TaskSlaResponse, None]:
"""Get the task SLA by category"""
try:
task_sla = sla_dict[request.category]
except KeyError | Exception:
raise HTTPException(400, detail="Directory not found")
return TaskSlaResponse(category=request.category, sla=task_sla)
字符串
但是当我使用“/docs”端点来查找swagger时,它并没有出现在那里。
我试着在本地运行它,但它在我机器上的Docker容器中运行得很好。
我只是不知道发生了什么事。
只是想知道,我用的是F1免费示例,每天限制60分钟,不知道这能不能屏蔽这种东西
你们能帮帮我吗?
我的dockerfile:
FROM python:3.11-slim
WORKDIR /app
ENV POETRY_VIRTUALENVS_CREATE=false
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -y libpq-dev gcc
RUN pip install poetry
COPY . .
RUN poetry install --without dev --no-interaction --no-ansi
EXPOSE 8000
RUN chmod +x /app/docker-entrypoint.sh
CMD ["./docker-entrypoint.sh"]
型
docker-entrypoint.sh:
#!/bin/sh
poetry run uvicorn senior.main:app --host 0.0.0.0 --port 8000
型
我的主文件:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from .extensions.settings import config
from .routes.task import router as task_router
def create_app(title: str, description: str, routes: list) -> FastAPI:
"""App factory"""
app = FastAPI(title=title, description=description)
for route in routes:
app.include_router(route)
app.add_middleware(CORSMiddleware, allow_origins=config.origins, allow_methods=config.methods)
return app
app = create_app(config.title, config.description, [task_router])
型
我的应用服务示例设置:x1c 0d1x
我的问题不在于部署,而在于部署了什么。
尽管我添加了代码,但在Azure应用程序中找不到它
的
但在本地运行时:
1条答案
按热度按时间sulc1iza1#
这里是我的简单FastAPI应用程序,您可以将其用作起点。除了Swagger文档的默认
/docs
端点之外,还有其他端点。字符串
requirements.txt:
型
下面是我在应用程序中使用的Dockerfile。
型
的数据
在这里,我将可用性位置设置为EastUS,对于示例应用程序,我设置为公共访问。
然后我将ACR配置到我的应用服务Web应用程序,如下所示。
的
您应该在ACR和webapp中使用相同的区域。
的