📜  Dockerizing 一个简单的 Django 应用程序(1)

📅  最后修改于: 2023-12-03 15:14:46.776000             🧑  作者: Mango

Dockerizing 一个简单的 Django 应用程序

使用 Docker 可以快速轻松地将应用程序打包并运行在不同环境中。本文将介绍如何 Dockerizing 一个简单的 Django 应用程序。

基本要求

在开始之前需要确保已经安装了以下工具:

  • Docker
  • Docker Compose
步骤
步骤1:创建 Django 应用程序

首先我们需要创建一个 Django 应用程序,可以通过以下命令来创建:

$ django-admin startproject <project-name>
$ cd <project-name>
$ python manage.py startapp <app-name>

这将创建一个名为 project-name 的 Django 项目,其中包含一个名为 app-name 的 Django 应用程序。

步骤2:创建 Dockerfile 文件

接下来,我们需要创建一个名为 Dockerfile 的文件,用于定义 Docker 镜像的构建方法。在项目根目录下创建 Dockerfile 文件,内容如下:

FROM python:3.9

# 设置环境变量
ENV PYTHONUNBUFFERED 1

# 安装依赖
RUN pip install --upgrade pip
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

# 创建工作目录
RUN mkdir /app
WORKDIR /app

# 复制代码
COPY . /app/

以上 Dockerfile 文件定义了使用 Python3.9 作为基础镜像,并且安装了 requirements.txt 中指定的依赖包,最后将整个项目代码复制到容器中。

步骤3:创建 docker-compose 文件

再创建一个名为 docker-compose.yml 的文件,用于定义如何运行 Docker 容器。在项目根目录下创建 docker-compose.yml 文件,内容如下:

version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres:12
    volumes:
      - postgres_data:/var/lib/postgresql/data/

volumes:
  postgres_data:

以上 docker-compose.yml 文件定义了两个服务,一个是名为 web 的 Django 应用程序,另一个是名为 db 的 PostgreSQL 数据库。web 服务定义使用当前目录下的 Dockerfile 文件构建镜像,并将应用程序运行在 8000 端口上,同时使用外部的 8000 端口映射到容器的 8000 端口。db 服务中使用了预先定义好的 PostgreSQL 镜像,并使用 volumes 处理了数据的持久化问题。

步骤4:构建并启动 Django 应用程序

在执行 docker-compose up 命令时,Docker 会自动按照 Dockerfile 和 docker-compose.yml 文件的定义来构建和启动应用程序、数据库等服务。在项目的根目录下执行以下命令:

$ docker-compose up

等待一段时间后,Docker 会自动编译安装 Django 应用程序的依赖,然后启动应用程序。接下来访问 http://localhost:8000 就可以看到 Django 的欢迎页面了。

步骤5:结束

当需要结束 Docker 中的容器时,可以使用以下命令:

$ docker-compose down

以上就是 Dockerizing 一个简单的 Django 应用程序的具体步骤。使用 Docker 管理 Django 应用程序可以极大地提高开发效率和程序的可移植性。