📅  最后修改于: 2023-12-03 15:14:46.776000             🧑  作者: Mango
使用 Docker 可以快速轻松地将应用程序打包并运行在不同环境中。本文将介绍如何 Dockerizing 一个简单的 Django 应用程序。
在开始之前需要确保已经安装了以下工具:
首先我们需要创建一个 Django 应用程序,可以通过以下命令来创建:
$ django-admin startproject <project-name>
$ cd <project-name>
$ python manage.py startapp <app-name>
这将创建一个名为 project-name
的 Django 项目,其中包含一个名为 app-name
的 Django 应用程序。
接下来,我们需要创建一个名为 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
中指定的依赖包,最后将整个项目代码复制到容器中。
再创建一个名为 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
处理了数据的持久化问题。
在执行 docker-compose up
命令时,Docker 会自动按照 Dockerfile 和 docker-compose.yml 文件的定义来构建和启动应用程序、数据库等服务。在项目的根目录下执行以下命令:
$ docker-compose up
等待一段时间后,Docker 会自动编译安装 Django 应用程序的依赖,然后启动应用程序。接下来访问 http://localhost:8000
就可以看到 Django 的欢迎页面了。
当需要结束 Docker 中的容器时,可以使用以下命令:
$ docker-compose down
以上就是 Dockerizing 一个简单的 Django 应用程序的具体步骤。使用 Docker 管理 Django 应用程序可以极大地提高开发效率和程序的可移植性。