FastAPI через Docker не работаетPython

Программы на Python
Anonymous
FastAPI через Docker не работает

Сообщение Anonymous »

У меня есть следующие два файла, но я не могу заставить сервер fastapi работать через Docker.
Я использую команду docker build -t my_project . для его сборки и запустите Docker -it -p 8080:8080 my_project, чтобы запустить сервер. Наконец, я использую следующую команду Curl для вызова API с этой ошибкой: Curl: (56) Ошибка приема: сброс соединения по одноранговому узлу.
curl -X POST "http://127.0.0.1:8080/predict/" -H "Content-Type: application/json" -d '{"image_sha": "example_sha"}'

Локальный запуск через Python работает отлично.
server.py
import base64
import io

from fastapi import FastAPI
from typing import Any
import uvicorn
from PIL import Image
import pydantic

class ImageModelInput(pydantic.BaseModel):
image_sha: str

def get_base64_encoded_image(self) -> str:
return "dummy_base64_image"

def decode_image(self) -> Image.Image:
image_data = base64.b64decode(self.image_base64)
return Image.open(io.BytesIO(image_data))

class ImageModelOutput(pydantic.BaseModel):
attributes: list[str]

class ImageModel:
def __init__(self, model: Any):
self.model = model
self.app = FastAPI()

@self.app.post("/predict/", response_model=ImageModelOutput)
async def predict(input: ImageModelInput):
image = input.get_base64_encoded_image()
prediction = self.model_predict(image)
return ImageModelOutput(attributes=prediction)

@self.app.get("/readyz")
async def readyz():
return {"status": "ready"}

def model_predict(self, image: Image.Image) -> list[str]:
# Replace this method with actual model prediction logic
return ["dummy_attribute_1", "dummy_attribute_2"]

def run(self, host: str = "127.0.0.1", port: int = 8080):
uvicorn.run(self.app, host=host, port=port)

# Example usage
if __name__ == "__main__":
# Replace with your actual model loading logic
dummy_model = "Your_Model_Here"
image_model = ImageModel(model=dummy_model)
image_model.run()

Файл Docker:
FROM python:3.12.4-slim@sha256:2fba8e70a87bcc9f6edd20dda0a1d4adb32046d2acbca7361bc61da5a106a914

WORKDIR /app

RUN --mount=type=cache,target=/root/.cache/pip \
pip install -U pip poetry wheel

RUN addgroup --system somebody && \
adduser --system --home /app --ingroup somebody somebody && \
chown -R somebody:somebody /app

USER somebody

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

ENV PYTHONUNBUFFERED=1

EXPOSE 8080
CMD python3 cx_ai_lightbox/server.py


Подробнее здесь: https://stackoverflow.com/questions/786 ... ot-running

Вернуться в «Python»