使用docker启动uWSGI和nginx来部署Django项目

概念

一个web服务器面对的是外部世界。它能直接从文件系统提供文件 (HTML, 图像, CSS等等)。然而,它无法直接与Django应用通信;它需要借助一些工具的帮助,这些东西会运行运用,接收来自web客户端(例如浏览器)的请求,然后返回响应。

一个Web服务器网关接口(Web Server Gateway Interface) - WSGI - 就是干这活的。 WSGI 是一种Python标准。

uWSGI是一种WSGI实现。在这个教程中,我们将设置uWSGI,让它创建一个Unix socket,并且通过WSGI协议提供响应到web服务器。最后,我们完整的组件栈看起来将是这样的:
the web client <-> the web server <-> the socket <-> uwsgi <-> Django

部署静态文件

在运行nginx之前,你必须收集所有的Django静态文件到静态文件夹里(不收集那么admin页面无法正确加载)。首先,必须编辑mysite/settings.py,添加:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")
STATIC_URL = '/static/'

然后运行

python manage.py collectstatic

克隆dockerfile

我的github:https://github.com/xf1688/nginx-uwsgi-django
把django项目的根目录下的所有文件复制到app/文件夹下面,然后直接运行

python3

  • docker build -t djangoapp .
  • docker run -d -p 0.0.0.0:80:80 djangoapp

python2

  • docker build -f Dockerfile-py2 -t djangoapp .
  • docker run -d -p 0.0.0.0:80:80 djangoapp

你可能感兴趣的:(使用docker启动uWSGI和nginx来部署Django项目)