我现在正在尝试构建我的 docker 镜像我有我的 app.py:import pandas as pdfrom flask import Flask, request, render_templateimport osfrom joblib import loadMODEL_DIR = os.environ[\'MODEL...
我现在正在尝试构建我的docker镜像我有我的app.py:
import pandas as pd
from flask import Flask, request, render_template
import os
from joblib import load
MODEL_DIR = os.environ["MODEL_DIR"]
MODEL_FILE = os.environ["MODEL_FILE"]
METADATA_FILE = os.environ["METADATA_FILE"]
MODEL_PATH = os.path.join(MODEL_DIR, MODEL_FILE)
METADATA_PATH = os.path.join(MODEL_DIR, METADATA_FILE)
app = Flask(__name__)
#Loading model
clf = load(MODEL_PATH)
@app.route('/', methods=['GET', 'POST'])
def index():
result = ''
text = ''
#print(clf.predict(["I am angry"]))
if request.method == 'POST':
text = request.form.get("textTocompute")
result = clf.predict([text])
return render_template("index.html", result=result, text=text)
if __name__ == "__main__":
app.run(host='0.0.0.0')
要求.txt:flaskjoblibnumpypandasmatplotlibscikit-learn
和Dockerfile:
FROM python:3.6
WORKDIR /app
RUN mkdir ./mlsample
RUN mkdir ./mlsample/model
ENV MODEL_DIR=app/mlsample/model
ENV MODEL_FILE=clf.joblib
ENV METADATA_FILE=metadata.json
ENV FLASK_APP=app.py
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY reviewDataCleaned.csv .
COPY docker-ml.py .
RUN python ./docker-ml.py
COPY app.py .
COPY templates ./templates
EXPOSE 5000
CMD ["python", "app.py"]
我想构建这个但是我收到此错误:
[ 9/11] RUN python ./docker-ml.py:
32.42 Loading reviewDataCleaned dataset...
32.42 fitting model
32.42 Serializing model to app/mlsample/model/clf.joblib
32.42 Traceback (most recent call last):
32.42 File "./docker-ml.py", line 54, in <module>
32.42 dump(clf,MODEL_PATH)
32.42 File "/usr/local/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 481, in dump
32.42 with open(filename, 'wb') as f:
32.42 FileNotFoundError: [Errno 2] No such file or directory: 'app/mlsample/model/clf.joblib'
23 | COPY docker-ml.py .
24 |
25 | >>> RUN python ./docker-ml.py
26 |
27 | COPY app.py .
--------------------
ERROR: failed to solve: process "/bin/sh -c python ./docker-ml.py" did not complete successfully: exit code: 1
我该如何修复它?
这是实际的错误:
FileNotFoundError: [Errno 2] No such file or directory: 'app/mlsample/model/clf.joblib'
Docker 容器找不到文件 app/mlsample/model/clf.joblib
。我假设脚本本身应该创建该文件,因此我倾向于认为问题出在 Dockerfile 中的这一行:
ENV MODEL_DIR=app/mlsample/model
您设置 MODEL_DIR
为相对路径。结果最终为 Docker WORKDIR
+ MODEL_DIR
,因此 /app/app/mlsample/model
。尝试设置 MODEL_DIR
为正确的相对路径,或设置为绝对路径,即:
# Absolute path
ENV MODEL_DIR=/app/mlsample/model
# Or path relative to the WORKDIR
ENV MODEL_DIR=mlsample/model