我想用docker-compose来运行本地的Django/Nginx项目。为什么我的Django项目抛出一个ImportError:no模块名为my_project.wsgi?
我收到后,下面的错误泊坞窗,构成了起来:
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
__import__(module)
ImportError: No module named my_project.wsgi
[2016-11-18 02:58:22 +0000] [9] [INFO] Worker exiting (pid: 9)
[2016-11-18 02:58:22 +0000] [1] [INFO] Shutting down: Master
[2016-11-18 02:58:22 +0000] [1] [INFO] Reason: Worker failed to boot.
我不是100%肯定,但我相信有问题的行是在我的搬运工,构成这里:
command: /usr/local/bin/gunicorn my_project.wsgi:application -w 2 -b :8000
这里是我的全多克尔 - 撰写:
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
- redis:redis
volumes:
- /usr/src/app
- /usr/src/app/static
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/gunicorn my_project.wsgi:application -w 2 -b :8000
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
image: kartoza/postgis:9.4-2.1
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data/
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
volumes:
- redisdata:/data
我的目录结构:
docker-compose.yml
web/
Dockerfile
manage.py
my_project/
__init__.py
settings.py
urls.py
wsgi.py
accounts_app/
我wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
application = get_wsgi_application()
我的settings.py:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
SECRET_KEY = os.environ['SECRET_KEY']
ALLOWED_HOSTS=['*']
TEMPLATE_DEBUG = True
WSGI_APPLICATION = 'my_project.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': os.environ['POSTGRES_NAME'],
'USER': os.environ['POSTGRES_USER'],
'PASSWORD': os.environ['POSTGRES_PASS'],
'HOST': os.environ['DB_SERVICE'],
'PORT': os.environ['DB_PORT'],
}
}
TIME_ZONE = "UTC"
LANGUAGE_CODE = "en-us"
SITE_ID = int(os.environ.get("SITE_ID", 1))
我不知道从哪里开始解决此,如果任何人有任何建议,请让我知道我可以发布实际的Django项目的dockerfile,如果这将有所帮助。
可以在settings.py中错误地设置我的BASE_DIR导致此问题? – david