Docker Django 范例
本文介绍如何使用 Docker Compose 部署 Django 应用。这是一个完整的示例,展示了如何将 Django 项目容器化。
📋 前置要求
- Docker 20.10+ 已安装
- Docker Compose V2 已安装(推荐)或 Docker Compose V1
- Git 已安装
🚀 快速开始
1. 克隆项目
1 2
| git clone https://github.com/noahzaozao/docker_django_demo.git cd docker_django_demo
|
2. 构建镜像
使用 Docker Compose V2(推荐):
或使用旧版 Docker Compose:
3. 启动服务
1 2 3 4 5
| docker compose up -d
docker-compose up -d
|
4. 收集静态文件
1 2 3 4 5
| docker compose exec web python manage.py collectstatic --noinput
docker exec -i <container-name> bash -c 'python manage.py collectstatic --noinput'
|
5. 执行数据库迁移(如需要)
1 2 3 4 5
| docker compose exec web python manage.py migrate
docker exec -i <container-name> bash -c 'python manage.py migrate'
|
🛠️ 常用操作
查看运行状态
1 2 3 4 5
| docker compose ps
docker-compose ps
|
查看日志
1 2 3 4 5
| docker compose logs -f web
docker-compose logs -f web
|
进入容器
1 2 3 4 5
| docker compose exec web bash
docker-compose exec web bash
|
停止服务
1 2 3 4 5
| docker compose stop
docker-compose stop
|
停止并删除容器
1 2 3 4 5 6
| docker compose down
docker-compose stop docker-compose rm -f
|
停止并删除容器、网络和卷
1 2 3 4 5
| docker compose down -v
docker-compose down -v
|
🌐 访问应用
启动成功后,访问:
📝 Docker Compose 文件示例
典型的 Django 项目 docker-compose.yml 文件结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| version: '3.8'
services: web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8080:8000" depends_on: - db environment: - DEBUG=1 - DATABASE_URL=postgresql://user:password@db:5432/dbname
db: image: postgres:15 volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_DB=dbname - POSTGRES_USER=user - POSTGRES_PASSWORD=password
volumes: postgres_data:
|
🔧 常见问题
1. 端口被占用
如果 8080 端口被占用,可以修改 docker-compose.yml 中的端口映射:
2. 权限问题
如果遇到权限问题,可以:
1 2 3 4 5
| ls -la
sudo chown -R $USER:$USER .
|
3. 数据库连接失败
确保数据库服务已启动:
1 2
| docker compose ps docker compose logs db
|
4. 静态文件无法加载
确保已执行 collectstatic 命令,并检查 STATIC_ROOT 和 STATIC_URL 配置。
📚 参考资源