Проблемы с портом в Google Cloud Run

Я новичок в Docker и Google Cloud. Я пытаюсь разместить себя в Google Cloud: https://github.com/movie-web/backend. Однако я продолжаю получать эту ошибку:

Revision 'backend-movieweb-00006-rjg' is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=80 environment variable. Logs for this revision might contain more information. Logs URL: Open Cloud Logging  For more troubleshooting guidance, see https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start

Я установил здесь версию Docker Hub, которую я использую:

  • Я также разрешил правила входа и выхода для портов через брандмауэр Google.
  • Я также попробовал добавить дополнительный аргумент контейнера (-p 80:80).
  • Я тоже пробовал разные порты

Если я запускаю его непосредственно из облачной оболочки PowerShell без каких-либо других команд, он работает, однако общедоступный IP-адрес, который он предоставляет, требует, чтобы моя учетная запись Google аутентифицировала его, поэтому я не могу использовать этот метод:

    -p 80:80 \
    -e MWB_POSTGRES__CONNECTION=[removed_postgrs_url] \
    -e MWB_CRYPTO__SESSION_SECRET = "[removed_crypto_session_secret] \
    -e MWB_META__NAME=test-movie-web \
    -e MWB_POSTGRES__SSL=true \
    -e MWB_POSTGRES__MIGRATE_ON_BOOT=true \
    -e MIKRO_ORM_MIGRATIONS_DISABLE_FOREIGN_KEYS=false \
    -e MWB_SERVER__ALLOW_ANY_SITE=true \
    registry-1.docker.io/techygiraffe999/backend-movieweb:1.3.1

Дополнительные настройки:

  • Моя аутентификация установлена ​​на: Allow unauthenticated invocations Tick this if you are creating a public API or website.
  • Мой входной контроль настроен на: All

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

Нам нужно увидеть Dockerfile и команду развертывания.

John Hanley 23.02.2024 20:01
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
1 028
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несколько соображений:

Проблема с портом и проблема «контейнер не запускается»

Учитывая, что вы играли с сопоставлением портов, я подозреваю, что проблема может быть в самом «запуске». «Не удалось запустить и прослушать» может быть проблемой запуска или проблемой порта. Я обнаружил, что мой контейнер иногда запускается локально, но не в облаке из-за различных проблем с конфигурацией.

Полезные шаги по устранению неполадок:
  • Используйте операторы печати и проверьте журнал запуска облака, чтобы убедиться, что вы начинаете, как ожидалось.
  • Используйте службу регистрации, например Sentry, чтобы отправлять вам информацию о состоянии вашего контейнера и вашей контейнерной среды.
  • В проекте запуска в облаке перейдите на вкладку YAML, чтобы проверить конфигурацию образа, которая используется для настройки контейнера. Я обнаружил, что переменные env часто не передаются должным образом.

Сопоставление портов

Cloud Run по умолчанию использует порт 8080. Cloud run вставляет это в контейнер как переменную среды PORT при запуске, поэтому убедитесь, что ваше приложение внутри контейнера настроено соответствующим образом.

Этот ответ не имеет ничего общего с Cloud Run. Например, Cloud Run не использует Docker. Такие операторы, как EXPOSE и ENV, не действуют в Cloud Run.

John Hanley 23.02.2024 20:55

Спасибо @JohnHanley. Очень справедливо: этот ответ был слишком ориентирован на Docker. Я отредактировал его соответствующим образом, и, пожалуйста, не стесняйтесь обращаться ко мне, если он нуждается в дальнейшем улучшении.

FlightPlan 23.02.2024 21:53

Ваш ответ полезен. Однако для ответа ОП должен предоставить Dockerfile и команду развертывания. Получив эту информацию, обновите свой ответ.

John Hanley 23.02.2024 22:00

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