2

Я хотел бы настроить (Python) стандартную управляемую виртуальную машину Runtime. Теоретически это должно быть возможно, добавив дополнительные команды в файл докеров DKM.Как настроить управляемую виртуальную машину Google App Engine со стандартным временем выполнения?

Google's documentation заявляет, что файл докеры VM автоматически генерируется при первом развертывании приложения;

Если вы используете стандартное время выполнения, SDK создаст файл Docker для вас при первом запуске команд развертывания приложения gcloud. Файл будет существовать в заранее определенном месте:

  • Если вы разрабатываете в Java, то Dockerfile появляется в корне скомпилирован веб-каталога приложений архива (WAR)
  • Если вы разрабатываете в Python или Go, Dockerfile появляется в корневой директории вашего приложения.

И эти дополнительные команды действительно могут быть добавлены;

В этот файл можно добавить дополнительные команды докеров, продолжая запускать и развертывать приложение со стандартным объявлением во время выполнения.

Однако на практике Dockerfile автоматически удаляется сразу после развертывания, препятствуя любой настройке.

Кому-нибудь удалось добавить команды Dockerfile в управляемую виртуальную машину со стандартным временем выполнения? Любая помощь будет с благодарностью оценена.

ответ

2

Я пробовал то же самое и не получилось. Однако есть эквивалентный способ сделать это, к которому я вернулся.

Вы можете создать пользовательскую среду выполнения, которая имитирует стандартную среду выполнения.

Вы можете сделать это, поскольку Google предоставляет Docker base images для всех стандартных режимов работы. Таким образом, копирование стандартного времени выполнения - это просто выбор правильного базового изображения в файле Docker для пользовательской среды выполнения. Для стандартного Python App Engine Ут Dockerfile является:

FROM gcr.io/google_appengine/python-compat 
ADD . /app 

Теперь, когда вы воссоздали стандартное время работы в качестве пользовательского выполнения, вы можете изменить Dockerfile, чтобы сделать какие-либо настройки, которые вам необходимы.

Важное примечание

Сервер разработки не поддерживает пользовательские Dockerfiles (вы получите ошибку о --custom-EntryPoint), так что вы должны переместить тестовую среду для серверов Engine App, если вы делаете это. Я думаю, что это верно независимо от того, используете ли вы стандартную среду исполнения и настраиваете файл Docker или используете пользовательскую среду выполнения. См. this answer.

0

Примечание о сервере разработки не работает с пользовательской автономной работой - dev_appserver.py не занимается Докером или Dockerfiles, поэтому он жалуется о необходимости указать --custom_entrypoint. Однако в качестве обходного пути вы можете вручную настроить зависимости локально.Вот пример использования «appengine-vm-fortunespeak», который использует пользовательскую среду выполнения, основанную на питона-Compat:

$ git clone https://github.com/GoogleCloudPlatform/appengine-vm-fortunespeak-python.git 
$ cd appengine-vm-fortunespeak-python 

# Local dependencies from Dockerfile must be installed manually 
$ sudo pip install -r requirements.txt 
$ sudo apt-get update && install -y fortunes libespeak-dev 

# We also need gunicorn since its used by python-compat to serve the app 
$ sudo apt-get install gunicorn 

# This is straight from dev_appserver.py --help 
$ dev_appserver.py app.yaml --custom_entrypoint="gunicorn -b localhost:{port} main:app" 

Обратите внимание, что если вы используете какой-либо из не -compat изображений, вы можете запустить приложение напрямую, используя Докер, так как они не должны подражать унаследованную App Engine API, например, с помощью «getting-started-python», который использует питона выполнения:

$ git clone https://github.com/GoogleCloudPlatform/getting-started-python.git 
$ cd 6-pubsub 

# (Configure the app according to the tutorial ...) 

$ docker build . 
$ docker images # (note the IMAGE_ID) 
$ docker run -p 127.0.0.1:8080:8080 -t IMAGE_ID 

Попробуйте выше любой -compat, и у вас возникнут проблемы - например, на python-compat вы увидите ошибки инициализации во время выполнения/google/appengine/tools/vmboot.py. Он должен запускаться на реальном экземпляре управляемой виртуальной машины.

+0

Можете ли вы заставить команду docs написать что-нибудь о выполнении пользовательских сроков выполнения на dev_appserver.py? Как и сейчас, абсолютно никакой документации нет. Даже строки, чтобы сказать, что это невозможно, или требуется какая-то дополнительная настройка. Это серьезное упущение. Мне потребовалось 2 дня невероятного разочарования, прежде чем я смог даже понять, что он даже не поддерживается. – user2771609

+0

Кроме того, можете ли вы подробно остановиться на изображениях, совместимых с не-совместимыми? Когда вы говорите устаревший API App Engine, какой аспект API App Engine вы имеете в виду? Как использовать стандартную среду выполнения, которая не является устаревшей? – user2771609

+0

Да, это изучается. По устаревшему API я имею в виду изображения, поддерживающие одни и те же API-интерфейсы API App Engine, как стандартные среды выполнения, заканчивающиеся на «-compat», перечисленные на странице https://cloud.google.com/appengine/docs/managed-vms/custom-runtimes #base_images. Этот документ также должен быть обновлен, так как он пропускает «нестандартные» изображения gcr.io/google_appengine/python, gcr.io/google_appengine/golang и gcr.io/google_appengine/nodejs (см. Поиск docker gcr.io/google_appengine для полного обновленного списка). – Adam

Смежные вопросы