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’, ‘myemail@email.com’);
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。

廣告