Переход со стандартной среды на гибкую в движке приложений Google

I'm migrating my standard environment app to flexible environment in GAE and facing issues.

фрагмент кода app.yaml

runtime: custom
env: flex
api_version: 1
threadsafe: true

handlers:

- url: /.*
  script: main.app

Докерфайл

FROM gcr.io/google_appengine/python-compat-multicore
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

ENV MODULE_YAML_PATH app.yaml

RUN pip install -r requirements.txt

проблема при запуске приложения gcloud (трассировка стека)

 File "/env/local/lib/python2.7/site-packages/google/appengine/ext/vmruntime/vmconfig.py", line 63, in BuildVmAppengineEnvConfig
    escaped_appid = appid.replace(':', '_').replace('.', '_')
AttributeError: 'NoneType' object has no attribute 'replace'

Есть ли что-то, чего мне не хватает в файле dockerfile? Каковы другие изменения конфигурации, которые следует сделать, чтобы не было много изменений кода на уровне приложения. Целесообразно ли использовать webapp2 в гибкой среде


person chetan    schedule 28.11.2016    source источник
comment
Похоже, что в гибкой среде информация о метаданных недоступна для ядра приложения, поэтому она должна предоставляться ему через службы метаданных. Все еще пытаюсь найти рабочее решение.   -  person chetan    schedule 29.11.2016


Ответы (1)


Мы работаем над улучшением сообщения об ошибке, но это происходит из-за того, что вы пытаетесь использовать среду выполнения python-compat-multicore. Эта среда выполнения не поддерживается в env:flex и устарела. Мы просим людей следовать этому руководству для обновления до среды выполнения: python:

https://cloud.google.com/appengine/docs/flexible/python/migrating

person Justin Beckwith    schedule 30.11.2016
comment
Я не могу использовать runtime:python, так как мне нужны библиотеки c, упомянутые в файле докеров. Итак, я попытался создать из gcr.io/google_appengine/python вместо gcr.io/google_appengine/python-compat-multicore, и он был успешно развернут, однако, когда я посетил URL-адрес приложения, я получил ошибку сервера. Глядя на ошибки, я вижу BadArgumentError: приложение не должно быть пустым. Итак, я предоставил точку входа в качестве сервера пушки в файле докеров, но теперь библиотека ndb для механизма приложения не импортируется. Я где-то читал, что это из-за образа python, поэтому я использую python-compat-multicore в качестве базового образа докера. - person chetan; 30.11.2016
comment
Вы можете проверить мой другой вопрос и его обсуждение для более подробной информации. stackoverflow.com/questions/40840855/ - person chetan; 30.11.2016