
Мы хотели внести быстрое изменение в работающее приложение GAE, чтобы включить регистрацию запросов для отслеживания ошибки.
При подключении по SSH к работающему экземпляру может быть сложно определить, где хранится код приложения, из-за использования Docker.
Покаэти инструкциипозволяют запустить оболочку в экземпляре контейнера, vim
или подобная функция недоступна в контейнере, поэтому изменить код невозможно.
Ниже мы расскажем, как мы выяснили, где найти приложение.
решение1
В консоли GAE перейдите в боковое меню и выберитеApp Engine -> Instances
Если вы не пытаетесь подключиться к приложению по умолчанию, измените значение в раскрывающемся списке в левом верхнем углу.
Затем нажмите кнопку SSH.
Образы Docker хранятся в, /var/lib/docker/overlay2
но естьмногоиз них.
Чтобы найти тот, который содержит ваше приложение, выберите имя файла, уникальное для вашего проекта, например, мы выбрали , messageProcessor.js
а затем найдите его среди всех изображений.
(У пользователя SSH нет прав, поэтому вам понадобится sudo для запуска find в этой папке)
sudo find /var/lib/docker/overlay2 -name messageProcessor.js
Надеюсь, вы получите только один результат, что-то вроде этого:
/var/lib/docker/overlay2/14b22c856283a3231a55c79f54d298acb9750fc886037533ef830acf55a10116/merged/app/jobs/messageProcessor.js
Теперь вы знаете, где найти ваше приложение, и можете редактировать файл:
sudo vi /var/lib/docker/overlay2/14b22c856283a3231a55c79f54d298acb9750fc886037533ef830acf55a10116/merged/app/some/file/in/my/app.js
Затем перезапустите приложение, чтобы изменения вступили в силу.
# ps -ef | grep node
root 11152 11151 0 Sep13 ? 00:00:00 node /app/index.js
# sudo kill <the pid of your process>