Корневое расположение проекта Google App Engine

Извиняюсь за, казалось бы, очевидный вопрос, но я полагаю, что ответ может помочь другим. Я не могу найти документацию по пути к файлу в виртуальной машине Google App Engine (Cloud Shell), где я могу найти обслуживаемые статические файлы. Мне нужно получить последние изменения восходящего потока из частного репозитория github.

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


person Brian    schedule 15.08.2018    source источник
comment
App Engine и Cloud Shell — разные вещи. Cloud Shell — это интерактивная оболочка, работающая на другом компьютере, полностью управляемая Google. Вы можете развернуть оттуда свой код в App Engine, как вы можете сделать это на своем компьютере, но на этом связь заканчивается. Кроме того, ваш вопрос странно сформулирован и трудно понять, о чем вы спрашиваете.   -  person amport    schedule 15.08.2018
comment
Итак, в прошлом я выполнял удаленное извлечение из github на виртуальную машину через Cloud Shell. Проще говоря, я не могу найти каталог на виртуальной машине, из которой я сделал этот git pull. Я понимаю, что они разные, и извиняюсь за то, что я очень мало в них понимаю, по общему признанию, но единственное, чего мне сейчас не хватает, - это расположение каталога, остальной процесс у меня под контролем.   -  person Brian    schedule 15.08.2018


Ответы (1)


Здесь необходимо решить несколько вопросов:

Cloud Shell — это виртуальная оболочка.

Google Cloud Shell — это интерактивная оболочка для Google Cloud Platform.

Среда, в которой вы работаете, представляет собой контейнер, работающий на виртуальной машине в принадлежащем Google проекте внутри GCP.

Вы можете убедиться в этом, проверив сервер метаданных (доступно только для виртуальных машин GCP):

curl -H 'Metadata-Flavor:Google' "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=text"

В предоставленных метаданных вы увидите, как создается и настраивается этот контейнер.

Cloud Shell привязана к пользователю, поэтому вы всегда будете получать доступ к одной и той же среде, если будете обращаться к ней с одними и теми же учетными данными, независимо от проекта. Однако, если вы войдете под другим пользователем, вы получите другую среду.

Вы не можете получить доступ к стандартным экземплярам GAE

GAE — это полностью управляемая среда, и вы не сможете получить к ней доступ. Таким образом, вы не сможете найти корень работающего проекта ядра приложения.

Однако, судя по тому, как GAE развертывает ваш код, он использует промежуточную корзину для сбора кода перед компиляцией. Вы можете найти свою промежуточную корзину с помощью API администратора App Engine. . Обычно это staging.<PROJECT_ID>.appspot.com, хотя вы можете изменить эту конфигурацию. Вы можете получить свои файлы оттуда.

Вы можете получить доступ к гибким приложениям GAE

Однако развертывание во flex получает ваши файлы, создает с ними контейнер Docker, а затем развертывает этот контейнер внутри виртуальной машины.

Согласно документации, вы можете подключитесь напрямую к вашему контейнеру, запустив:

gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION] 
docker exec -it gaeapp /bin/bash

Что касается вашей проблемы

Согласно тому, что вы говорите в комментариях к вопросу, ваша проблема может исходить из множества мест. От изменения оболочки, к которой вы подключаетесь, до сброса среды оболочки (удаления всех файлов) до тысячи различных возможных проблем.

Лучший способ думать об этом — рассматривать Cloud Shell как временную среду для запуска команд, а не как виртуальную машину.

Зная это, вы можете смонтировать постоянную файловую систему (GCS через GCSFuse, Cloud Filestore, ...), чтобы сохранить вашу работу, или просто используйте Git, чтобы ваша работа всегда синхронизировалась на репозиторий.

GAE Flex имеет несколько хороших интеграций с CI, так что это плюс для выбора маршрута Git.

person Jofre    schedule 15.08.2018
comment
Это идеально, спасибо @Jofre. Я думаю, что настоящий источник моей проблемы в том, что я развернул это приложение год назад или около того, и я думаю, что некоторые из действительных путей для взаимодействия с ним больше не доступны. Так что мои ожидания относительно того, как с ним взаимодействовать, больше недействительны. Спасибо за тщательный разбор! - person Brian; 16.08.2018