Настройка Dockerfile для Google Cloud Run с Nginx и uWSGI - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь перенести приложение Django из Google Kubernetes Engine в Google Cloud Run, который полностью управляется. По сути, с помощью Cloud Run вы упаковываете свое приложение в один Dockerfile, а Google делает все остальное.

У меня есть Dockerfile, который в какой-то момент вызывает скрипт bash через ENTRYPOINT

Но мне нужно запустить Nginx и запустить Gunicorn. Документация Google Cloud Run предлагает запустить Gunicorn следующим образом:

CMD gunicorn -b :$PORT foo.wsgi

(давайте сядем, мое Django приложение называется "foo")

Но мне также нужно чтобы начать Nginx с помощью:

CMD ["nginx", "-g", "daemon off;"]

И поскольку в Dockerfile разрешен только один CMD, я не уверен, как их объединить.

Чтобы попытаться обойти некоторые из этих трудностей, я искал использование Dockerfile для сборки, который уже работает, и я наткнулся на этот: https://github.com/tiangolo/meinheld-gunicorn-docker

Но пути не совсем соответствует моему. Цитирование из документации этого репо:

Вам не нужно клонировать репозиторий GitHub. Вы можете использовать это изображение в качестве базового изображения для других изображений, используя это в вашем Dockerfile:

FROM tiangolo/meinheld-gunicorn:python3.7

COPY ./app /app Ожидается файл в /app/app/main.py.

И будет ожидать, что она будет содержать переменную app с вашим приложением "WSGI".

Мой wsgi.py файл заканчивается на /app/foo/foo/wsgi.py и содержит приложение с именем application

Но если я правильно понимаю эту документацию, когда в ней говорится, что приложение WSGI будет называться app и будет находиться в /app/app/main.py, это, в основном, говорит о том, что мне нужно пересмотреть путь и имя переменной так что когда он строит образ, он знает, что app называется application и что вместо того, чтобы найти его в /app/app/main.py, он найдет его в /app/foo/foo/wsgi.py

Я предполагаю, что могу исправить app vs application имя переменной, добавив строку в мой wsgi.py файл, например app = application, но я не уверен, как исправить путь, который Docker ожидает.

Может кто-нибудь объяснить мне как адаптировать это к моим потребностям?

(или любой другой способ заставить его работать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...