Ошибка Cloud Run: Container failed to start. Не удалось запустить, а затем прослушать порт, определенный переменной окружения PORT. - Django

Я новичок в задавании вопросов на SO, так что потерпите меня. Я знаю, что уже есть много ответов об этом, но ни один из них не работает. Я работал над созданием веб-приложения на Django, и теперь мне нужно развернуть его, чтобы вы могли получить доступ к нему на мобильных устройствах. Я пытался запустить его на Google Cloud Run, но безуспешно. Я создал контейнер Docker, и он отлично работает локально, но когда я пытаюсь развернуть контейнер, он выдает следующую ошибку: Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

Журналы возвращаются на ту же страницу, без дополнительной информации. Я пробовал менять порты в docker-compose.yml и Dockerfile на 80, 8000, 8080 и любые другие варианты между ними, но безуспешно. Я знаю, что для работы с Django нужно использовать App Engine, но я уже загрузил слишком много материала в базу данных sqlite3, а все источники, которые я могу найти для App Engine, посвящены PostGres, на который у меня нет времени переходить. Любая помощь в этом вопросе буквально спасет все остатки здравомыслия, которые у меня остались после этого проекта, хаха. Я также убедился, что включил ALLOWED_HOST 0.0.0.0 в settings.py, так что я действительно не знаю, что происходит. Вот содержимое моего Dockerfile:

ENV PYTHONUNBUFFERED 1
EXPOSE 8080
ENV PORT 8080
ENV HOST 0.0.0.0
RUN mkdir /Exeplore
WORKDIR /Exeplore
COPY requirements.txt /Exeplore/
RUN pip install -r requirements.txt
COPY . /Exeplore/

Вот содержимое моего файла docker-compose.yml:

  web:
    build: .
    environment:
      MYENV: EXAMPLE
    volumes:
      - .:/code
  web_migrate:
    extends:
      service: web
    command: python manage.py migrate
  web_run:
    extends:
      service: web
    command: python manage.py runserver 0.0.0.0:8080
    ports:
      - "8080:8080"

[Это ошибка, которую я получаю от google cloud run, а журнал просто ссылается на ту же страницу][1]

Надеюсь, я все сделал правильно, но, пожалуйста, дайте мне знать, если потребуется что-то еще. [1]: https://i.stack.imgur.com/Ib693.png

Добавьте команды Docker compose в Dockerfile

ENV PYTHONUNBUFFERED 1
EXPOSE 8080
ENV PORT 8080
ENV HOST 0.0.0.0
RUN mkdir /Exeplore
WORKDIR /Exeplore
COPY requirements.txt /Exeplore/
RUN pip install -r requirements.txt
COPY . /Explore/
ENTRYPOINT [ "python" "manage.py"]
CMD [ "runserver", "0.0.0.0:8080" ]

Теперь вы должны иметь возможность вызвать приложение python с необходимыми параметрами, например, для выполнения команды по умолчанию.

docker run -p 8080:8080 my_container

В приведенном выше Dockerfile:

  • Точка входа выдаст вызов интерпретатору python и вызовет приложение manage.py.
  • CMD (команда) вызовет дополнительные параметры, используемые в композитном файле (т.е. runserver 0.0.0.0:8080). Вы можете переопределить поведение по умолчанию, добавив необходимый параметр, например migrate.

e.g.

docker run -p 8080:8080 my_container migrate
Вернуться на верх