Самостоятельный запуск 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 или несколько контейнеров)