下面我将详细讲解如何使用Docker部署Django+Mysql+Redis+Gunicorn+Nginx的完整攻略。
步骤一:准备工作
- 安装Docker和Docker Compose,并保证环境变量配置正确;
- 构建Django项目,并编写Dockerfile文件;
- 安装Gunicorn、Nginx、Mysql和Redis依赖包,并编写Docker Compose文件。
步骤二:编写Dockerfile文件
在项目根目录下编写Dockerfile文件,内容如下:
# 基础镜像:Python3.8
FROM python:3.8
# 设置环境变量
ENV PYTHONUNBUFFERED 1
# 设置工作目录
WORKDIR /code
# 复制项目文件到容器内
COPY requirements.txt /code/
COPY . /code/
# 安装依赖包
RUN pip install -r requirements.txt
步骤三:编写Docker Compose文件
在项目根目录下编写Docker Compose文件,内容如下:
version: '3'
services:
web:
build: .
command: >
sh -c "python manage.py migrate &&
python manage.py collectstatic --no-input &&
gunicorn my_project.wsgi:application -w 2 -b :8000"
environment:
DJANGO_SETTINGS_MODULE: my_project.settings
volumes:
- .:/code
- static_volume:/code/static
expose:
- 8000
depends_on:
- db
- redis
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: my_database
MYSQL_USER: my_user
MYSQL_PASSWORD: my_password
MYSQL_ROOT_PASSWORD: my_root_password
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:latest
nginx:
image: nginx:latest
ports:
- 8000:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- static_volume:/code/static
depends_on:
- web
volumes:
mysql_data:
static_volume:
示例一:Django API项目
如果你正在开发Django API项目,并且使用了Django Rest Framework,那么你需要添加一些配置,让Django Rest Framework能够正常工作。
在Django项目的settings.py文件中,注意添加以下配置:
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework.authtoken',
...
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
示例二:Django网页项目
如果你正在开发Django网页项目,并且使用了Django模板引擎,那么你需要添加Nginx配置文件,让Nginx能够正确地处理静态文件。
在nginx目录下创建nginx.conf文件,内容如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream my_project {
server django:8000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://my_project;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
alias /code/static/;
}
}
}
步骤四:启动容器
在项目根目录下执行以下命令,启动容器。
docker-compose up -d
至此,你的Django+Mysql+Redis+Gunicorn+Nginx项目已经成功地部署完成了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker部署Django+Mysql+Redis+Gunicorn+Nginx的实现 - Python技术站