J'essaie de déployer mon application sur GAE en utilisant leur version d'essai. Jusqu'à présent, j'ai réussi à créer un app.yaml avec des paramètres personnalisés pour un environnement flexible avec python 3.6.
Cependant, lors du déploiement de l'application, l'application se construit avec succès, cependant, je reçois toujours l'erreur suivante
Mise à jour du service [par défaut] (cela peut prendre plusieurs minutes) ... a échoué. ERREUR: (gcloud.app.deploy) Réponse d'erreur: [9] Erreur de démarrage de l'application:/bin/sh: 1: exec: gunicorn: not found
Voici la hiérarchie des dossiers de fichiers dans mon projet:
Suivre le code pour 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
Je manque sûrement quelque chose et j'apprécierais vraiment une aide ici. Lien vers 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. Après les modifications du fichier requirements.txt, j'obtiens l'erreur 502 Bad Gateway.
Journaux indiquant que le service a été exécuté avec succès.
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
Quelqu'un peut-il regarder mon code dans git et me dire ce qui me manque ici?
Quelques modifications et j'ai pu exécuter votre application dans Docker.
Twilio_Routing.py
, changez Host
pour écouter sur 0.0.0.0
au lieu de 127.0.0.1
. Ceci est nécessaire pour que le serveur soit également disponible en externe.Depuis votre app.yaml
est déjà configuré, vous n'avez pas besoin de personnaliser votre Dockerfile
comme Google App Engine
a besoin. Gardez-le comme votre propre personnalisé. Voici ce que j'ai utilisé:
#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
pour moi, l'erreur était aussi simple que de s'assurer que gunicorn était en requirements.txt
Flask==1.0.2
gunicorn==19.9.0
Remarque:
Je vois que le PO avait ajouté ce drapeau; c'est pour aider les autres qui peuvent rencontrer exec: gunicorn: not found
Considérant l'exemple montré dans le GoogleCloudPlatform/python-runtime
page, pensez à changer votre ligne CMD de:
CMD exec gunicorn -b :$PORT main:app
À:
CMD gunicorn -b :$PORT main:app
Je vois exec
utilisé ici uniquement lorsque l'image de base est celle de python
, pas gcr.io/google-appengine/python
.