Самостоятельный запуск GitHub Runner в Google Cloud Run без входного порта

Я хочу запускать контейнеры докеров в Google Cloud Run, которые действуют как GitHub Self Hosted Runners, но у меня возникают проблемы при развертывании контейнера в CloudRun, поскольку он жалуется на порт. Ошибка такая:

      Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable.

В моем Dockerfile я не устанавливаю никакую переменную порта и не раскрываю какие-либо порты, так как бегуну GitHub не нужен вход, только выход на 443.

Есть ли способ развернуть службу в Cloud Run, но не раскрыть входной порт?

Если это случай открытия порта 8080 по умолчанию, чтобы запустить его (хотя на самом деле нет службы, которая прослушивает этот порт), тогда я предполагаю, что могу просто добавить EXPOSE 8080 в dockerfile?

Из журналов CloudRun я вижу, что служба запуска github успешно запускается и регистрируется в GitHub, но затем завершается из-за этой ошибки.

Что мне не хватает?

1 ответ

Контракт Cloud Run довольно прост:

  • Приложение без сохранения состояния (без монтирования тома в контейнере)
  • Ответ на HTTP-запрос (нужен веб-сервер)

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

Таким образом, вы не можете запускать фоновый процесс (на данный момент) в Cloud Run, только на веб-сервере (например, на сервере API).

Если вы ищете управляемое контейнерное решение, которое запускает контейнер в фоновом режиме, вы можете взглянуть на автопилот GKE . Первый кластер бесплатный, вы платите за под (1 или несколько контейнеров)

Другие вопросы по тегам