【发布时间】:2019-03-06 10:23:33
【问题描述】:
我正在尝试使用 Dockerfile 的自定义映像在 GAE 上部署我的 Django 应用程序。我正在关注 Google 提供的 example。但是我在最后一步有一个问题:
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
Docker 文件:
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.
提前感谢您的帮助!
【问题讨论】:
-
检查您的源代码添加到的位置。 Dockerfile 说
ADD . /app. -
我原样离开了
ADD. /app。但是我的 Django 应用程序没有名为 main 的模块。我有点困惑。 -
可以添加你项目的文件夹结构吗?
-
我是说:您的尝试都不尊重 docker 文件夹结构。这里的
WORKDIR(工作文件夹)是什么?您的 myproject.wsgi 文件在哪里? -
我已经更新了我的问题,所以我添加了文件夹的结构(我试图只包含相关文件)并添加了完整的 Dockerfile
标签: django google-app-engine dockerfile