📅  最后修改于: 2023-12-03 15:14:46.816000             🧑  作者: Mango
在本篇文章中,我们将使用 Docker 将一个 Django 应用程序容器化。Docker 是一种流行的虚拟化技术,可以使用它来创建独立的,轻量级的容器,每个容器中运行一个应用程序。使用 Docker 可以更轻松地管理应用程序的运行环境和部署,同时还可以实现隔离和可移植性。
在本文中,我们将首先介绍 Django 应用程序的设置过程,然后将其容器化。我们将使用 Docker Compose 来管理多个容器,并将其编排在一起。最后,我们将演示如何使用 Docker Compose 运行应用程序并访问它。
我们将采用一个简单的 Django 应用程序,它包括一个用于展示 “Hello, World!” 的视图。
首先,我们需要在本地安装 Django。可以用以下命令在终端中安装 Django:
pip install django
然后,创建一个新的 Django 项目和一个应用程序:
django-admin startproject django_hello_world
cd django_hello_world
python manage.py startapp hello
接下来,我们将在 hello
应用程序中创建一个视图。在 hello/views.py
文件中添加以下代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, World!")
然后,在根 urls.py
文件中添加 URL 模式,让我们可以访问该视图:
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('hello/', include('hello.urls')),
path('admin/', admin.site.urls),
]
接下来,我们需要为应用程序创建一个 urls.py
文件,并将其到指向 index
视图:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
最后,我们需要运行迁移,以在数据库中创建必要的表:
python manage.py migrate
现在我们已经完成了 Django 应用程序的设置,并且我们可以使用以下命令在本地启动它:
python manage.py runserver
在浏览器中访问 http://localhost:8000/hello
,你将看到 Hello, World!
的消息。
现在我们已经创建了 Django 应用程序并在本地启动它,接下来我们将使用 Docker Compose 将其容器化。
我们需要创建一个名为 Dockerfile
的文件,以便在 Docker 中运行我们的应用程序。在项目根目录中创建一个新文件 Dockerfile,并添加以下内容:
FROM python:3.8-slim-buster
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc \
libc-dev \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt /tmp/requirements.txt
RUN pip install --requirement /tmp/requirements.txt
WORKDIR /app
COPY . /app
CMD python manage.py runserver 0.0.0.0:8000
该 Dockerfile 使用 Python 3.8 作为基础镜像。它还安装 gcc
和 libc-dev
进行一些必要的编译。它安装了一个名为 requirements.txt
的依赖包,并将应用程序的源代码复制到镜像中。最后,它设置了一个 CMD
命令,以在容器运行时启动应用程序。
在项目的根目录中创建一个 docker-compose.yml
文件,并添加以下内容:
version: "3.9"
services:
db:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
POSTGRES_USER: django
POSTGRES_PASSWORD: django
POSTGRES_DB: django
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
environment:
DATABASE_URL: postgres://django:django@db:5432/django
env_file:
- .env
volumes:
postgres_data:
该 Docker Compose 文件定义了两个服务:db
和 web
。db
服务使用 PostgreSQL 镜像,定义了一个名为 postgres_data
的卷,用于在容器之间共享数据。web
服务构建 Dockerfile 中定义的镜像,并在容器启动时运行一个命令。它将应用程序的代码卷挂载到容器中。它定义了一个端口映射用于从主机访问应用程序,并将环境变量设置为连接到 PostgreSQL 数据库。
现在我们已经定义了 docker-compose.yml
,我们可以使用以下命令在容器中构建和运行应用程序:
docker-compose up
如果一切顺利,你可以在浏览器中访问 http://localhost:8000/hello
来查看应用程序运行的结果。
在本篇文章中,我们演示了如何使用 Docker Compose 将一个简单的 Django 应用程序容器化。我们首先介绍了 Django 应用程序的设置过程,然后创建了一个 Dockerfile 来定义在容器中运行应用程序的步骤。最后我们使用 Docker Compose 对多个容器进行编排,并成功地在容器中运行了我们的应用程序。
现在你理解了如何使用 Docker 和 Docker Compose 来容器化一个简单的 Django 应用程序,你已经可以将这些知识应用在你自己的项目中了。