Установите keras tensorflow в AWS ElasticBeanstalk - PullRequest
0 голосов
/ 12 июля 2020

Я создал простое Flask веб-приложение с CRUD-операциями и развернуло его в beanstalk с указанным ниже файлом requirements.txt

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

целое flask приложение работает нормально в моей локальной среде, поэтому я заархивировал и развернул в 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++: []

, но я все равно получаю ту же ошибку. как я могу решить эту проблему или есть ли какие-то неправильные шаги выше?

Спасибо.

1 Ответ

0 голосов
/ 14 июля 2020

Наконец решено с помощью контейнера docker, я создал среду docker в AWS ElasticBeanstalk и развернул ее, и теперь она работает нормально, ниже показаны мой файл конфигурации и файл 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"
    }
  ]
}
...