Невозможно установить переменную среды в Dockerfile для пользовательской среды выполнения в движке приложения Google

Я использую ниже Dockerfile для настройки пользовательской среды выполнения для движка приложения.

FROM ubuntu:latest   
RUN apt-get update -y  
RUN apt-get install -y python-pip build-essential libssl-dev libffi-dev python-dev libxml2-dev libxslt1-dev xmlsec1

RUN apt-get install -y curl unzip
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz  
RUN mkdir -p /usr/local/gcloud  
RUN tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz  
RUN /usr/local/gcloud/google-cloud-sdk/install.sh

RUN curl https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip > /tmp/google_appengine_1.9.40.zip  
RUN unzip /tmp/google_appengine_1.9.40.zip -d /usr/local/gae

ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin  
ENV PATH $PATH:/usr/local/gae/google_appengine/
COPY . /app  
WORKDIR /app  
EXPOSE 80  
RUN pip install -r requirements.txt  
ENTRYPOINT gunicorn -b :$PORT main:app

Выпуск:

Проблема в том, что я скачал zip-файл библиотеки движка приложения, распаковал его и добавил в переменную PATH, но все еще при запуске приложения через указанную точку входа я получаю ошибку импорта. Читая об образах докеров в GAE, я узнал, что по умолчанию он запускается в корневом профиле, поэтому я не думаю, что проблема связана с обновлением переменной PATH корневого профиля и доступом к ней в каком-либо другом профиле.

Ниже приведена трассировка стека

File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app  
__import__(module)
File "/app/main.py", line 6, in <module>
from com.sears.mrp.handlers.ProductRuleHandler import ProductRuleHandler  
File "/app/com/sears/mrp/handlers/ProductRuleHandler.py", line 1, in <module>
from google.appengine.ext import ndb  
ImportError: No module named google.appengine.ext
[2016-11-28 09:10:17 +0000] [10] [INFO] Worker exiting (pid: 10)
[2016-11-28 09:10:17 +0000] [5] [INFO] Shutting down: Master
[2016-11-28 09:10:17 +0000] [5] [INFO] Reason: Worker failed to boot.*


If any one has faced this issue before please provide solution, I'm clueless on that to try more.

1 ответ

Решение

Это должна быть первая строка в вашем Dockerfile:

FROM gcr.io/google_appengine/python-compat-multicore

Вам необходим базовый образ, который поддерживает API App Engine и поддерживает 7 API в стандартной (runtime: python27) среде выполнения App Engine.

Вы получаете ошибку импорта, указанную выше, поскольку API-интерфейсы ядра приложения недоступны во время выполнения, заданном вашим Dockerfile.

Узнайте больше здесь.