我用CRUD操作创建了一个简单的Flask Web应用程序,并使用以下requirements.txt文件将其部署在beantalk中
Flask==1.1.1
Flask-MySQLdb==0.2.0
Jinja2==2.11.1
mysql==0.0.2
mysqlclient==1.4.6
SQLAlchemy==1.3.15
Werkzeug==1.0.0
Flask-Cors==3.0.8
Flask-Mail==0.9.1
Flask-SocketIO==4.3.0
工作正常,然后我写了一个下面的函数
import tensorflow as tf
import keras
from keras.models import load_model
import cv2
import os
def face_shape_model():
classifier = load_model('face_shape_recog_model.h5')
image = cv2.imread('')
res = str(classifier.predict_classes(image, 1, verbose=0)[0])
return {"prediction": res}
在requirments.txt文件中包含以下软件包
keras==2.3.1
tensorflow==1.14.0
opencv-python==4.2.0.32
整个烧瓶应用程序在我的本地环境中运行良好,因此我压缩并部署到 AWS elasticbeanstalk 后,将其记录为错误以下
Unsuccessful command execution on instance id(s) 'i-0a2a8a4c5b3e56b81'. Aborting the operation.
Your requirements.txt is invalid. Snapshot your logs for details.
如上所述,我检查了日志,并显示以下错误
distutils.errors.CompileError: command 'gcc' failed with exit status 1
因此我根据上述内容搜索了上述错误,找到了以下解决方案,并创建了yml文件并将其添加到 .ebextension 文件中,如下所示
packages:
yum:
gcc-c++: []
但是我仍然遇到相同的错误。我该如何解决?还是上面有错误的步骤
谢谢。
答案 0 :(得分:1)
最后用docker容器解决了,我在AWS ElasticBeanstalk中创建了docker环境并部署了它,现在它可以正常工作了,下面显示了我的配置文件和Dockerfile
Dockerfile
FROM python:3.6.8
RUN mkdir -p /usr/src/flask_app/
COPY src/requirements.txt /usr/src/flask_app/
WORKDIR /usr/src/flask_app/
RUN pip install -r requirements.txt
COPY . /usr/src/flask_app
ENTRYPOINT ["python", "src/app.py"]
EXPOSE 5000
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": "5000",
"HostPort": "80"
}
]
}