Docker - 配置PostgreSql



PostgreSQL,通常被称为Postgres,是一个现代的、免费的、开源的关系数据库管理系统(RDBMS)。该软件专注于可靠性、性能和稳健性。该数据库系统的独特之处在于它同时支持SQL查询和JSON文件。

Docker 为容器化Postgres数据库提供了一个强大的解决方案。这有助于管理、部署和扩展数据库。在本章中,我们将学习如何在隔离的环境中将Postgres数据库进行Docker化。

Docker化PostgreSql的先决条件

在开始将Postgres设置到Docker中之前,需要复习以下概念:

  • Docker基础知识 - 了解Docker的概念,例如容器、Dockerfile和镜像。
  • Postgres基础知识 - 了解Postgres的基本知识以及如何处理用户和数据库。
  • Docker安装 - 确保Docker已启动并正在运行。如果您的系统上尚未安装,您可以参考Docker官方网站
  • 文本编辑器的存在 - 确保系统上已安装文本编辑器,例如Vscode、Notepad++或Sublime。
  • CLI(命令行界面) - 非常需要熟悉处理CLI命令。

在Docker中配置和连接到PostgreSQL数据库的步骤

请按照以下步骤在Docker中配置和连接到PostgreSQL:

步骤1:从官方hub拉取Postgres镜像

首先,我们需要做的就是从Docker的网站上拉取官方的Postgres镜像。这可以通过打开命令提示符或终端并运行以下命令来完成。

$ docker pull postgres

此命令会将Postgres的最新镜像拉取到您的本地环境。

Pull the Postgres Image

步骤2:创建Postgres容器并运行它

现在是时候使用Docker的Postgres镜像创建一个容器了。要实现这一点,请使用以下命令:

$ docker run -d —name my-postgres-container -p 5432:5432 -e POSTGRES_PASSWORD=password postgres

让我们详细了解一下该命令:

  • Docker run - 此命令用于启动Docker容器。
  • -d - 此标志表示分离模式。这意味着容器在后台运行,不会干扰其他进程。
  • –name - 此标志用于命名容器。您可以根据自己的喜好命名容器。
  • -p 5432:5432 - 这是端口标志。它将主机端口和容器端口绑定在一起,以便它们可以轻松地相互通信。5432是Postgres的默认端口。
  • -e POSTGRES_PASSWORD="your password" - 此标志用于设置环境变量。在本例中,我们在容器内将名为“POSTGRES_PASSWORD”的环境变量设置为“your password”指示的密码值。
  • postgres - 这是您本地机器中用于容器的Docker镜像的名称。
Create a Postgres Container

步骤3:验证容器是否正常运行

要检查容器是否正常运行,我们可以使用以下命令:

$ docker ps

这将列出Docker容器或进程。“ps”代表进程的状态。

上述命令的输出将是一个表格,提供有关容器ID、镜像、命令、创建时间、状态、端口和名称的信息。

Verify that the Postgres Container

步骤4:连接到Postgres数据库

现在Postgres容器已启动并正在运行,让我们连接到数据库。这可以通过在容器内运行以下psql命令来实现。

$ docker exec -it my-postgres-container psql -U postgres

让我们分解上述命令以更好地理解:

  • docker exec - 用于在Docker环境中执行命令。
  • -it - 此标志用于在Docker容器内打开交互式终端。
  • Postgres - 这是正在运行的Docker的名称。
  • psql - 这是Postgres的客户端,可帮助您与数据库系统交互。
  • -U postgres - 这定义了容器连接到的Postgres服务器的用户。
Connect to Postgres Database

步骤5:在Postgres环境中创建数据库

一旦我们成功连接到Postgres服务器,让我们继续在其中创建数据库。要创建新的数据库,可以使用以下SQL命令:

CREATE DATABASE <database name>

在上述命令中,<database name> 可以替换为用户定义的任何合适的数据库名称。

Create Database Inside Postgres 1

要列出所有存在的数据库,我们可以使用以下命令:

\l
Create Database Inside Postgres 2

要退出显示模式并退出,我们可以使用以下命令:

\q

要连接到任何数据库,可以使用以下命令:

\c postgres

连接到数据库后,我们可以运行SQL查询并在数据库中创建表以获得所需的输出。

步骤6. 在数据库中创建表

现在我们的数据库已准备就绪,让我们在其中创建一个表并向其中插入一些示例数据行:

CREATE TABLE people_details (
   id SERIAL PRIMARY KEY,
   name VARCHAR(50),
   email VARCHAR(80)
);

INSERT INTO people (name, email) VALUES (‘myname’, ‘[email protected]’);
Create Able in Database Postgres

步骤7:查询数据

为了确保数据已成功插入到表中,我们可以使用以下SQL命令:

SELECT * FROM <table name>

让我们将<table name>替换为“people_details”。这应该列出表“people_details”中存在的所有行,如下所示:

Query the Postgres Data

结论

在本章中,我们解释了如何将Postgres服务器Docker化,以及如何在容器内轻松构建和运行它。此环境一致、可移植且易于部署。此设置可以轻松地与其他用户共享并与任何其他大型与Docker相关的基础设施集成。

关于Docker化Postgres服务器的常见问题

在本节中,我们收集了一些关于如何Docker化Postgres服务器的常见问题,以及它们的答案。

1. 如何升级Docker中的Postgres版本?

我们可以通过使用Docker exec命令连接到容器的shell并手动更新版本来升级Docker中的Postgres版本。

我们还可以使用命令“docker pull postgres”拉取Docker的最新镜像。您也可以在Dockerfile中指定要升级到的版本并重新构建镜像。

2. 如何在Docker中排除Postgres相关的错误?

我们可以通过使用命令“docker logs”检查容器日志来排除Docker中Postgres相关的错误。确保容器有足够的CPU和存储内存可用。重要的是要检查您的机器上是否有其他服务正在运行端口5432。

广告