GAE ERROR: - / bin / sh:1:exec:gunicorn:not found

时间:2017-12-24 04:28:03

标签: python git api google-app-engine flask

我尝试使用试用版在GAE上部署我的应用。到目前为止,我成功地使用python 3.6创建了一个带有灵活环境的自定义设置的app.yaml。

但是,在部署应用程序时,应用程序构建成功,但是,我一直收到以下错误

  

更新服务[默认](这可能需要几分钟)...失败。   错误:(gcloud.app.deploy)错误响应:[9]   应用启动错误:   / bin / sh:1:exec:gunicorn:not found

以下是我项目中文件的文件夹层次结构:

enter image description here

遵循app.yaml的代码

env: flex
runtime: custom
api_version: 1
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
    python_version: 3.6

#handlers:
#- url: /SmsResponse
#  script: Twilio_Routing.RecivedSms
#
#- url: /CallResponse
#  script: Twilio_Routing.ReceivedCall

我肯定错过了一些东西,我真的很感激这里的一些帮助。 Link to git repo

requirements.txt

Flask==0.10.1
gunicorn==19.3.0
twilio==6.8.4

DockerFile

FROM gcr.io/google-appengine/python
LABEL python_version=python3.6
RUN virtualenv --no-download /env -p python3.6

# Set virtualenv environment variables. This is equivalent to running
# source /env/bin/activate
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt

ADD . /app/

#CMD gunicorn -b :$PORT main:app
ENTRYPOINT [ "python", "Twilio_Routing.py" ]

P.S。在requirements.txt发生更改后,我收到错误502 Bad Gateway。

显示服务已成功执行的日志。

017-12-25 01:29:03 default[20171224t212610]   * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
2017-12-25 01:29:03 default[20171224t212610]   * Restarting with stat
2017-12-25 01:29:03 default[20171224t212610]   * Debugger is active!
2017-12-25 01:29:03 default[20171224t212610]   * Debugger PIN: 134-103-452
2017-12-25 01:29:17 default[20171224t212610]   * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
2017-12-25 01:29:17 default[20171224t212610]   * Restarting with stat
2017-12-25 01:29:17 default[20171224t212610]   * Debugger is active!
2017-12-25 01:29:17 default[20171224t212610]   * Debugger PIN: 134-103-452

有人可以用git查看我的代码并告诉我这里缺少什么吗?

3 个答案:

答案 0 :(得分:3)

一些更改,我可以在docker中运行您的应用。

  1. Twilio_Routing.py中,更改host以收听0.0.0.0而不是127.0.0.1。这也是让服务器在外部可用的必要条件。
  2. 由于您已配置app.yaml,因此无需将Dockerfile自定义为Google App Engine要求。保留它作为您自己的定制。这是我使用的:

    #Python's Alpine Base Image
    FROM python:3.6-alpine3.6
    
    #Installing all python modules specified
    ADD requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    
    #Copy App Contents
    ADD . /app
    WORKDIR /app
    
    #Start Flask Server
    CMD [ "python","Twilio_Routing.py"]
    #Expose server port
    EXPOSE 8080
    

答案 1 :(得分:0)

考虑到GoogleCloudPlatform/python-runtime页面中显示的示例,请考虑更改您的CMD行:

CMD exec gunicorn -b :$PORT main:app

要:

CMD gunicorn -b :$PORT main:app

仅当基本图片为python时,我才会看到exec used here,而不是gcr.io/google-appengine/python

答案 2 :(得分:0)

对我来说,错误很简单,就像确保将{@ {1}}中的金枪鱼放在其中一样

requirements.txt

注意:

我看到OP添加了此标志;这是为了帮助可能会遇到Flask==1.0.2 gunicorn==19.9.0

的其他人