使用 Docker Compose 部署 Django 应用

阅读时长 4 分钟读完

简介

Docker Compose 是 Docker 的一个工具,可以方便地定义和运行多个 Docker 容器。它可以让我们更容易地部署和管理复杂的应用程序。在这篇文章中,我们将介绍如何使用 Docker Compose 部署 Django 应用。

准备工作

在开始之前,您需要安装 Docker 和 Docker Compose。如果您还没有安装,请前往 Docker 和 Docker Compose 的官方网站下载和安装。

创建 Django 应用

首先,我们需要创建一个 Django 应用。我们可以使用 Django 的命令行工具创建一个新的项目:

然后创建一个新的应用程序:

创建 Dockerfile

下一步是创建一个 Dockerfile 来构建我们的应用程序镜像。在项目的根目录下创建一个 Dockerfile 文件,内容如下:

-- -------------------- ---- -------
- -- --------- ------
---- ----------

- ------------
---- - -----
------- -----

- ----
--- --- ------- -- ----------------

- ------ ------ --
------ ----

- -- ------ --
--- ---------- ------------ ------------ ---------------

这个 Dockerfile 中,我们使用 Python3.6 作为基础镜像,在镜像中复制我们的代码,并安装依赖。然后将端口 8000 暴露给 Docker 容器,并运行 Django 应用程序。

创建 docker-compose.yml 文件

下一步是创建 docker-compose.yml 文件。这个文件定义了我们需要运行的 Docker 容器以及它们之间的依赖关系。在项目的根目录下创建一个 docker-compose.yml 文件,内容如下:

-- -------------------- ---- -------
-------- ---

---------
  ----
    ------ -
    -------- ------ --------- --------- ------------
    --------
      - -------
    ------
      - -----------
    -----------
      - --
  ---
    ------ ---------------
    ------------
      -------------- -------------
      ------------------ -----------------
      ------------ -----------
    --------
      - ---------------------------------------

--------
  --------------

这个 docker-compose.yml 文件定义了两个服务:web 和 db。Web 服务使用我们之前创建的 Dockerfile 构建镜像,在本地的 8000 端口上运行 Django 应用程序。 它也挂载了我们的项目代码,这样我们在本地修改代码时,容器也会自动更新。它还定义了 web 服务依赖于 db 服务。

db 服务使用 PostgreSQL 镜像,并定义了一些环境变量来设置数据库。它还定义了一个名为 postgres_data 的数据卷,以保存数据库中的数据。

运行 Docker Compose

现在我们已经定义了 Docker 容器和服务,我们可以使用 Docker Compose 来运行它们了。在项目的根目录下运行以下命令:

这个命令将会构建我们的应用程序镜像并启动我们定义的服务。当所有服务都已经启动后,您可以在本地浏览器上访问 http://localhost:8000 ,应该能够看到 Django 的默认欢迎页面。

结论

在本文中,我们已经介绍了如何使用 Docker Compose 部署 Django 应用。使用 Docker 和 Docker Compose 来部署应用程序可以使应用程序的部署和管理更加容易和灵活。当您准备将 Django 应用程序部署到生产环境时,您可以使用这篇文章中的示例代码作为起点来构建您自己的 Docker 镜像和 Docker Compose 配置文件。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67037715d91dce0dc84b8fa8

纠错
反馈