0%

docker打包Django项目教程

docker打包Django项目教程

要将 Django 项目打包为 Docker 镜像,你需要创建一个 Dockerfile,并配置相关的文件和设置。以下是一个基本的步骤指南,帮助你将 Django 项目打包为 Docker 镜像。

1. 创建 Django 项目

如果你还没有 Django 项目,可以使用以下命令创建一个新的 Django 项目:

django-admin startproject myproject
cd myproject

2. 创建 Dockerfile

在 Django 项目的根目录下创建一个名为 Dockerfile 的文件,内容如下:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制 requirements.txt 文件到容器中
COPY requirements.txt .

# 安装依赖 # 这里的 ENVIRONMENT 是个变量,通过启动命令传递, 如果是mac走第一条
pip install --no-cache-dir -r requirements.txt
# 复制项目文件到容器中
COPY . .

# 暴露端口
EXPOSE 8000

# 运行 Django 开发服务器
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

3. 创建 requirements.txt

确保在项目根目录下有一个 requirements.txt 文件,列出所有的依赖项。你可以使用以下命令生成 requirements.txt:

pip freeze > requirements.txt

4. 创建 .dockerignore 文件

为了避免将不必要的文件复制到 Docker 镜像中,可以创建一个 .dockerignore 文件,内容如下:

__pycache__
*.pyc
*.pyo
*.pyd
*.db
*.sqlite3
*.log
*.env

5. 构建 Docker 镜像

在项目根目录下,使用以下命令构建 Docker 镜像:

docker build -t mydjangoapp .

6. 运行 Docker 容器

构建完成后,可以使用以下命令运行 Docker 容器:

docker run -p 8000:8000 mydjangoapp

这将把容器的 8000 端口映射到主机的 8000 端口。

7. 访问 Django 应用

在浏览器中访问 http://localhost:8000,你应该能够看到 Django 的欢迎页面。

8. 数据库配置(可选)

如果你的 Django 项目使用数据库(如 PostgreSQL、MySQL 等),你需要在 Dockerfile 中添加数据库的相关配置,并确保数据库服务在容器中运行。你可以使用 Docker Compose 来管理多个服务。

9. 使用 Docker Compose(可选)

如果你希望使用 Docker Compose 来管理 Django 和数据库服务,可以创建一个 docker-compose.yml 文件,内容如下:

version: '3.8'

services:
web:
image: kamali:latest
restart: always
ports:
- "8000:8000"
volumes:
- /Users/c33/app/_static:/app/_static # 挂载路径
command: python manage.py runserver 0.0.0.0:8000
depends_on: # 删除这一行 可以不用配置数据库
- mysql

mysql: # 数据库配置 mysql 可以不要
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: securepassword
MYSQL_DATABASE: myproject
volumes:
- mysql_data:/var/lib/mysql

volumes:
mysql_data:

然后使用以下命令启动服务:

docker-compose up   # 此命令是控制台运行
docker-compose up -d # 此命令是后台运行

10. 直接以命令运行挂载目录或者文件

docker build -t mydjangoapp .
docker run -p 8000:8000 -v /root/settings.json:/app/settings.json mydjangoapp
# /root/settings.json 宿主机的文件路径
# /app/settings.json docker环境路径