如何在 Docker 容器中使用 PostgreSQL

阅读时长 4 分钟读完

简介

Docker 是一种流行的容器化平台,它可以让开发者快速构建、部署和运行应用程序。PostgreSQL 是一种流行的关系型数据库,它可以让开发者存储和管理应用程序中的数据。在这篇文章中,我们将介绍如何在 Docker 容器中使用 PostgreSQL,以及如何使用 Docker Compose 管理多个 Docker 容器。

安装 Docker

在开始之前,需要先安装 Docker。Docker 官方网站提供了详细的安装指南,可以根据不同的操作系统选择相应的安装方式。在安装完成后,可以通过运行以下命令来验证 Docker 是否正确安装:

创建 PostgreSQL 容器

在 Docker 中,可以使用 Docker 镜像来创建容器。Docker 镜像是一个轻量级的、可移植的打包格式,包含了应用程序和其依赖的所有组件。在本文中,我们将使用官方的 PostgreSQL 镜像来创建容器。

要创建一个 PostgreSQL 容器,可以使用以下命令:

这个命令将创建一个名为 my-postgres 的容器,并使用 POSTGRES_PASSWORD 环境变量设置密码。在这个示例中,我们使用了最新版本的 PostgreSQL 镜像。如果需要使用特定版本的 PostgreSQL 镜像,可以使用以下命令:

这个命令将创建一个名为 my-postgres 的容器,并使用 POSTGRES_PASSWORD 环境变量设置密码,并使用 PostgreSQL 9.6 镜像。

连接到 PostgreSQL 容器

要连接到 PostgreSQL 容器,可以使用以下命令:

这个命令将使用 psql 工具连接到名为 my-postgres 的容器中的 PostgreSQL 实例。在连接时,需要提供用户名和密码。在成功连接后,可以执行 SQL 命令来管理 PostgreSQL 数据库。

使用 Docker Compose 管理多个容器

在实际应用中,通常需要同时运行多个容器,例如 Web 应用程序和数据库。为了方便管理这些容器,可以使用 Docker Compose 工具。

Docker Compose 可以通过一个配置文件来定义多个容器的运行方式。在本文中,我们将创建一个包含 Web 应用程序和 PostgreSQL 数据库的 Docker Compose 配置文件。

以下是一个示例的 Docker Compose 配置文件:

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

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

这个配置文件定义了两个服务:web 和 db。web 服务使用当前目录下的 Dockerfile 构建镜像,并将容器的 8000 端口映射到主机的 8000 端口。db 服务使用官方的 PostgreSQL 镜像,并设置 POSTGRES_PASSWORD 环境变量。

在运行 Docker Compose 之前,需要先创建一个 Django Web 应用程序。以下是一个简单的 Django 应用程序的示例代码:

在应用程序的根目录下,需要创建一个 Dockerfile 文件来构建 Docker 镜像。以下是一个示例的 Dockerfile:

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

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

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

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

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

---- - ------

这个 Dockerfile 使用 Python 3.8 镜像作为基础镜像,并安装了应用程序所需的 Python 包。

在创建完应用程序和 Dockerfile 后,可以使用以下命令来启动 Docker Compose:

这个命令将会启动两个容器:web 和 db。在启动之后,可以通过访问 http://localhost:8000/ 来访问 Django Web 应用程序。

结论

在本文中,我们介绍了如何在 Docker 容器中使用 PostgreSQL,并通过 Docker Compose 管理多个容器。使用 Docker 可以让开发者快速构建、部署和运行应用程序,同时也可以提高应用程序的可移植性和可伸缩性。

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

纠错
反馈