,可以按照以下步骤进行:
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
上述Dockerfile中,使用Python 3.9作为基础镜像,将当前目录下的requirements.txt文件复制到容器中,并安装所需的依赖库。然后将当前目录下的所有文件复制到容器的/app目录下。最后,将容器的8000端口暴露出来,并运行app.py文件。
from flask import Flask, request
import joblib
app = Flask(__name__)
# 加载ML模型
model = joblib.load('model.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
features = data['features']
# 对输入数据进行预处理
processed_features = preprocess(features)
# 使用ML模型进行预测
prediction = model.predict(processed_features)
return {'prediction': prediction.tolist()}
def preprocess(features):
# 对输入数据进行预处理的逻辑
# ...
return processed_features
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
上述代码使用Flask框架创建一个简单的web应用。在/predict
路由上接收post请求,获取请求中的features数据,并进行预处理。然后使用已加载的ML模型进行预测,并将预测结果返回。
docker build -t python-web-server .
-t参数指定镜像的名称为python-web-server,最后的"."表示使用当前目录作为上下文构建镜像。
docker run -p 8000:8000 python-web-server
-p参数将容器的8000端口映射到主机的8000端口,以便可以通过主机访问容器中的web服务器。
现在,docker容器中的Python web服务器已经可以接收带有ML模型的post请求,并返回预测结果了。可以通过发送post请求到http://localhost:8000/predict
来测试。记得根据实际情况修改代码中的预处理逻辑和ML模型加载方式。
腾讯云相关产品推荐:
更多腾讯云产品信息和介绍,请访问Tencent Cloud。
领取专属 10元无门槛券
手把手带您无忧上云