如何在 Docker 容器中部署 Django 应用
Docker 是一个开放源码的同级容器化引擎,允许开发者构建像 Docker 镜像这样的容器,Docker 镜像可以允许在任何 Docker 主机上运行,而不会有任何运行时依赖性问题。Docker 在部署应用方面非常方便,特别是对于 Django 应用,Docker 支持快速部署、持久性存储和灵活性等方面都表现出色。下面我们将介绍如何使用 Docker 部署 Django 应用。
- 安装 Docker
首先,你需要在你的机器上安装 Docker。可以从官方网站下载 Docker 安装包或者使用你所使用的操作系统自带的软件包管理器来安装 Docker 。
- 创建 Dockerfile
Dockerfile 是创建镜像的重要文件。从本地构建镜像可以在开发阶段带来便利。在项目根目录里,新建一个名为 Dockerfile 的空文件,输入以下内容:
-- -------------------- ---- ------- ---- --------------- --- ------------------ ------- ----- ---- ---------------- - --- --- ------- -- ---------------- ---- - - --- - --------- ------------ ------------ -------------- -
这个 Dockerfile 并不复杂,它生成一个基于 Python 3.9 的最小镜像,安装了我们在 requirements.txt 中定义的 Django 要求并将从本地环境复制所有应用程序代码。它还将在容器中运行 Django 服务器。
- 创建 requirements.txt 文件
现在,我们需要为我们的 Django 应用程序创建 requirements.txt 文件。该文件定义了我们需要安装的 Python 包,以及它们的版本。在项目根目录中创建名为 requirements.txt 的文件,添加以下内容:
Django==3.2.4 psycopg2-binary==2.9.1 gunicorn==20.1.0
这里我们包括了 Django、PostgreSQL 包 psycopg2-binary,以及生产级 Python WSGI 应用服务器 Gunicorn。
- 构建 Docker 镜像
我们的 Dockerfile 和 requirements.txt 文件已经准备好了,现在我们可以构建 Docker 容器了。在项目根目录下运行以下命令:
docker build -t mydjangoproject .
你将会看到 Docker 开始运行构建过程,拉取依赖项,生成所需环境并安装 Django 应用程序。该过程需要几分钟时间,取决于您的机器性能和与互联网连接的快慢。
- 启动 Docker 容器
现在,我们已经构建出容器了,我们需要在容器内启动 Django 应用程序。在项目目录下运行以下命令:
docker run -p 8000:8000 mydjangoproject
这个命令将在本地的 8000 端口启动 Django 服务器。你可以在本地浏览器中访问 http://localhost:8000 查看 Django 网站。
- 使用 Docker Compose 启动容器
Docker Compose 是 Docker 内置的编排工具,它允许您定义和运行具有多个容器的 Docker 应用程序。在项目根目录下创建一个名为 docker-compose.yml 的文件,输入以下内容:
-- -------------------- ---- ------- -------- --- --------- ---- --------------- ------------------- ------ - -------- ---- -- ------- --------- ------- --------- -- ------ --------- --------- ------------- -------- - ------- ------ - ----------- ----------- - -- --- --------------- ------------------ ------ -------- -------- - --------------------------------------- ------------ - --------------------------- - ----------------------------- - --------------------------------- -------- --------------
这个 docker-compose.yml 文件定义了两个服务,一个是 web 服务,另一个是数据库(db)。在定义的 web 服务中,我们需要设置 container_name、构建 Docker 镜像、指定运行命令、给容器中的代码路径 /code 制定本地路径映射以便在容器内部修改代码、制定端口映射、指定依赖的数据库服务为 db。在数据库服务中,我们设置了容器名称、使用了 PostgreSQL 官方镜像、持久化数据挂载、数据库超级用户、数据库名称等。
现在,我们可以在项目目录下,运行以下命令启动应用程序:
docker-compose up -d
这会运行容器并在后台运行。
- 查看应用日志
使用 Docker Compose 运行时,您可以轻松获取应用程序标准输出和标准错误的日志。只需要运行以下命令:
docker-compose logs -t -f
-t 参数添加时间戳,-f 以 tail -f 的方式显示日志。
总结
在以上步骤中,我们通过 Docker 构建了 Django 应用程序所需的环境,并启动了它。当你在开发过程中需要部署 Django 应用时,使用 Docker 构建镜像和启动容器这些步骤将可以更加简单和规范。如果你想了解更多关于 Docker 和 Django 的详细文档,请参考:https://docs.docker.com/samples/django/。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6517e6a995b1f8cacd00dc07