Код: Выделить всё
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"]
Код: Выделить всё
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Запрос 
< /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
Мобильная версия