使用 Docker 部署 Django 项目可以大大简化环境配置,同时便于项目的迁移和扩展。以下是一个完整的流程,包括如何构建 Docker 镜像和启动 Django 项目。
步骤 1: 准备 Django 项目
确保你的 Django 项目可以正常运行,并且有以下关键文件:
requirements.txt:列出项目依赖项。manage.py:Django 的主管理脚本。settings.py:包含项目的配置。
如果还没有 requirements.txt 文件,可以使用以下命令生成:
pip freeze > requirements.txt步骤 2: 创建 Dockerfile
在项目根目录创建一个名为 Dockerfile 的文件,用于定义镜像的构建过程。
Dockerfile 示例
# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制项目文件到镜像中
COPY . /app
# 安装系统依赖和项目依赖
RUN apt-get update && apt-get install -y \
gcc libpq-dev && \
pip install --no-cache-dir -r requirements.txt
# 暴露应用端口(Django 默认端口)
EXPOSE 8000
# 启动命令
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]步骤 3: 创建 Docker Compose 文件(可选)
如果需要使用数据库(如 PostgreSQL 或 MySQL),建议使用 Docker Compose 管理多个服务。在项目根目录创建 docker-compose.yml 文件。
docker-compose.yml 示例
version: '3.9'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: django
POSTGRES_PASSWORD: password
POSTGRES_DB: django_db
ports:
- "5432:5432"在 settings.py 中配置数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django_db',
'USER': 'django',
'PASSWORD': 'password',
'HOST': 'db', # 服务名应与 docker-compose.yml 中的服务名一致
'PORT': '5432',
}
}步骤 4: 构建和运行容器
- 构建 Docker 镜像: 如果未使用 Docker Compose,直接运行以下命令:
docker build -t django-app .- 运行容器:
docker run -p 8000:8000 django-app- 使用 Docker Compose: 如果使用了 Docker Compose,运行以下命令:
docker-compose up --build步骤 5: 访问项目
打开浏览器访问 http://<服务器IP>:8000,应该可以看到 Django 项目的欢迎页面。
步骤 6: 处理静态文件(生产环境)
在生产环境中,需要收集静态文件并配置 Web 服务器(如 Nginx)来处理它们。
- 修改
Dockerfile:
RUN python manage.py collectstatic --noinput- 配置 Nginx(示例配置略),将静态文件目录映射为 Nginx 可访问路径。
这样,你就可以通过 Docker 部署一个完整的 Django 项目了!如果你有特定需求或问题,可以进一步调整或优化配置。
















