我尝试使用试用版在GAE上部署我的应用。到目前为止,我成功地使用python 3.6创建了一个带有灵活环境的自定义设置的app.yaml。
但是,在部署应用程序时,应用程序构建成功,但是,我一直收到以下错误
更新服务[默认](这可能需要几分钟)...失败。 错误:(gcloud.app.deploy)错误响应:[9] 应用启动错误: / bin / sh:1:exec:gunicorn:not found
以下是我项目中文件的文件夹层次结构:
遵循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查看我的代码并告诉我这里缺少什么吗?
答案 0 :(得分:3)
一些更改,我可以在docker中运行您的应用。
Twilio_Routing.py
中,更改host
以收听0.0.0.0
而不是127.0.0.1
。这也是让服务器在外部可用的必要条件。由于您已配置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