Сбой Docker-сервера по запросу клиентаPython

Программы на Python
Ответить
Anonymous
 Сбой Docker-сервера по запросу клиента

Сообщение Anonymous »

Я впервые пытаюсь реализовать Docker для развертывания. Все мои программные файлы находятся в папке «app», и у меня есть следующий код Dockerfile:

Код: Выделить всё

FROM python:3.12

# Path: /app

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip3 install --no-cache-dir -r /code/requirements.txt

COPY ./app /code/app

EXPOSE 5000

CMD ["uvicorn", "app.server:app", "--host", "0.0.0.0", "--port", "5000"]
Я использую очень простой сервер с fastAPI, который имеет две ветки.

Код: Выделить всё

server.py:
from fastapi import FastAPI
import joblib
import numpy as np
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

model = joblib.load('app/model.joblib')

class_names = np.array(['setosa','versicolor','virginica'])

app = FastAPI()

# Basic response for API root
@app.get('/')
def read_root():
return {'message': 'Iris model API'}

# Predict label based on sent post request data
@app.post('/predict')
def predict(data: dict):
features = np.array(data['features'].reshape(1,-1))
prediction = model.predict(features)
class_name = class_names[prediction][0] # Get the string label for model prediction
return {'prediction': class_name}

Код: Выделить всё

/predictЗапрос 
использует фиктивную модель scikit-learn, которая была сохранена в файле model.joblib, который также находится в том же каталоге (внутри папки приложения). Для справки, вот скриншот среды проекта:
Изображение
< /p>
Для пояснения: model.py не является зависимостью, влияющей на сервер. Он предназначался только для обучения и создания очень простой модели искусственного интеллекта с использованием scikit-learn, которая уже сохранена в model.joblib.
Сначала я запускаю docker build -t ai-template . для создания образа, а затем запустите docker run --name имя-контейнера -p 5000:5000 ai-template для запуска сервера, который прошел успешно, и я получаю следующий вывод :

Код: Выделить всё

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)
Однако, когда я пытаюсь использовать ссылку на локальный хост, чтобы увидеть, что возвращает сервер, он продолжает зависать, и я не могу использовать сервер. Знаете ли вы, в чем может быть проблема? Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/791 ... nt-request
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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