Проблема в Dockerfile при развертывании приложения Django в GAE - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь использовать пользовательский образ Dockerfile для развертывания моего приложения Django в GAE. Я следую примеру , предоставленному Google. Однако у меня есть проблема на последнем шаге:

CMD gunicorn -b :$PORT main:app

Я пробовал несколько вещей, но он продолжает говорить, что мой модуль не найден

Что я пробовал:

CMD gunicorn -b :$PORT wsgi:app

CMD gunicorn -b :$PORT mydjangoproject/wsgi:app

CMD gunicorn -b :$PORT mydjangoproject.wsgi


Dockerfile:

FROM solalsab/clarins:1.0.1

# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
# Use -p python3 or -p python3.7 to select python version. Default is version 2.
RUN virtualenv /env

# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Add the application source code.
ADD . /app

# Run a WSGI server to serve the application. gunicorn must be declared as
# a dependency in requirements.txt.
CMD gunicorn -b :$PORT main:app

Структура проекта:

+myproject/
 +mydjangoproject/
 | +wsgi.py
 | +...
 +app_template.yaml
 +generate_app_yaml.pu
 +manage.py
 +requirements.txt
 +Dockerfile

Сообщение об ошибке:

ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:
[2019-03-06 11:15:47 +0000] [6] [INFO] Starting gunicorn 19.9.0
[2019-03-06 11:15:47 +0000] [6] [INFO] Listening at: http://0.0.0.0:8080 (6)
[2019-03-06 11:15:47 +0000] [6] [INFO] Using worker: sync
[2019-03-06 11:15:47 +0000] [9] [INFO] Booting worker with pid: 9
[2019-03-06 11:15:47 +0000] [9] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/env/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
    self.load_wsgi()
  File "/env/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/env/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
    return self.load_wsgiapp()
  File "/env/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/env/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
    __import__(module)
ModuleNotFoundError: No module named 'main'
[2019-03-06 11:15:47 +0000] [9] [INFO] Worker exiting (pid: 9)
[2019-03-06 11:15:47 +0000] [6] [INFO] Shutting down: Master
[2019-03-06 11:15:47 +0000] [6] [INFO] Reason: Worker failed to boot.

Заранее благодарю за помощь!

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Мне, наконец, удалось заставить его работать, запустив:

Приложение CMD cd; exec gunicorn mydjangoproject.wsgi

0 голосов
/ 06 марта 2019

Часть main:app может быть взята из некоторого другого примера кода (например, здесь ), где добавлен файл main.py для ссылки на ваше приложение.В вашем случае вы можете создать этот main.py файл в своем корневом каталоге и добавить:

from mydjangoproject.wsgi import application

app = application

Или просто обновить свой Dockerfile следующим образом:

CMD gunicorn -b :$PORT mydjangoproject.wsgi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...