gunicorn为什么会挂在这个configuration?

我正在使用Docker构build一个多容器应用程序。 一切正常与Django(1.7)开发服务器。 但是当我尝试运行gunicorn时, gunicorn wsgi:application的命令似乎开始,然后提供没有输出,并保持terminal的控制,直到我按CtrlC。 这令人遗憾地意味着我没有什么有用的debugging信息。

我的API的Dockerfile是这样的:

 FROM ubuntu:14.04 MAINTAINER Garry Cairns ENV REFRESHED_AT 2015-01-13 # update packages and prepare to build software RUN ["apt-get", "update"] RUN ["apt-get", "-y", "install", "build-essential", "vim", "git", "curl"] RUN ["locale-gen", "en_GB.UTF-8"] # install latest python RUN ["apt-get", "-y", "build-dep", "python3-dev", "python3-imaging"] RUN ["apt-get", "-y", "install", "python3-dev", "python3-imaging", "python3-pip"] # prepare postgreSQL support RUN ["apt-get", "-y", "build-dep", "python3-psycopg2"] # create a python user to run our programs RUN ["groupadd", "-r", "python"] RUN ["useradd", "-r", "-g", "python", "python"] WORKDIR /home/python ADD ./ /home/python # manage requirements ENV REQUIREMENTS_REFRESHED_AT 2015-02-09 RUN ["pip3", "install", "-r", "requirements.txt"] 

我的产品设置(一般来说,cookiecutter Django的默认设置)是这样的:

 # -*- coding: utf-8 -*- ''' Production Configurations - Use djangosecure - Use Amazon's S3 for storing static files and uploaded media - Use sendgrid to send emails - Use MEMCACHIER on Heroku ''' from configurations import values # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings try: from S3 import CallingFormat AWS_CALLING_FORMAT = CallingFormat.SUBDOMAIN except ImportError: # TODO: Fix this where even if in Dev this class is called. pass from .common import Common class Production(Common): # INSTALLED_APPS INSTALLED_APPS = Common.INSTALLED_APPS # END INSTALLED_APPS # SECRET KEY SECRET_KEY = "Change me" # values.SecretValue() # END SECRET KEY # django-secure INSTALLED_APPS += ("djangosecure", ) # set this to 60 seconds and then to 518400 when you can prove it works SECURE_HSTS_SECONDS = 60 SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(True) SECURE_FRAME_DENY = values.BooleanValue(True) SECURE_CONTENT_TYPE_NOSNIFF = values.BooleanValue(True) SECURE_BROWSER_XSS_FILTER = values.BooleanValue(True) SESSION_COOKIE_SECURE = values.BooleanValue(False) SESSION_COOKIE_HTTPONLY = values.BooleanValue(True) SECURE_SSL_REDIRECT = values.BooleanValue(True) # end django-secure # SITE CONFIGURATION # Hosts/domain names that are valid for this site # See https://docs.djangoproject.com/en/1.6/ref/settings/#allowed-hosts ALLOWED_HOSTS = ["*"] # END SITE CONFIGURATION INSTALLED_APPS += ("gunicorn", ) # STORAGE CONFIGURATION # See: http://django-storages.readthedocs.org/en/latest/index.html INSTALLED_APPS += ( 'storages', ) # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings AWS_ACCESS_KEY_ID = "test" # values.SecretValue() AWS_SECRET_ACCESS_KEY = "test" # values.SecretValue() AWS_STORAGE_BUCKET_NAME = "test" # values.SecretValue() AWS_AUTO_CREATE_BUCKET = True AWS_QUERYSTRING_AUTH = False # AWS cache settings, don't change unless you know what you're doing: AWS_EXPIRY = 60 * 60 * 24 * 7 AWS_HEADERS = { 'Cache-Control': 'max-age=%d, s-maxage=%d, must-revalidate' % ( AWS_EXPIRY, AWS_EXPIRY) } # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url STATIC_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME # END STORAGE CONFIGURATION # EMAIL DEFAULT_FROM_EMAIL = values.Value('Correspondence <noreply@example.com>') EMAIL_HOST = values.Value('smtp.sendgrid.com') EMAIL_HOST_PASSWORD = "test" # values.SecretValue(environ_prefix="", environ_name="SENDGRID_PASSWORD") EMAIL_HOST_USER = "test" # values.SecretValue(environ_prefix="", environ_name="SENDGRID_USERNAME") EMAIL_PORT = values.IntegerValue(587, environ_prefix="", environ_name="EMAIL_PORT") EMAIL_SUBJECT_PREFIX = values.Value('[Correspondence] ', environ_name="EMAIL_SUBJECT_PREFIX") EMAIL_USE_TLS = True SERVER_EMAIL = EMAIL_HOST_USER # END EMAIL # TEMPLATE CONFIGURATION # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs TEMPLATE_LOADERS = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )), ) # END TEMPLATE CONFIGURATION # CACHING # Only do this here because thanks to django-pylibmc-sasl and pylibmc # memcacheify is painful to install on windows. try: # See: https://github.com/rdegges/django-heroku-memcacheify from memcacheify import memcacheify CACHES = memcacheify() except ImportError: CACHES = values.CacheURLValue(default="memcached://127.0.0.1:11211") # END CACHING 

有兴趣的人也可以查看完整的项目来源 。 有人知道这里怎么了? 或者甚至可以获得更多有用的debugging信息?

用gunicorn使用--bind标志。

例:

 gunicorn wsgi:application --bind:0.0.0.0:80