Docker Compose 快速安裝 PostgreSQL & pgAdmin 環境

2024/07/04 14 1 伺服器 , 資料庫

在現代開發環境中,能夠快速部署和管理資料庫系統對於開發者來說是至關重要的。本文將介紹如何使用 Docker Compose 快速安裝和配置 PostgreSQL 和 pgAdmin 環境。Docker Compose 是 Docker 的一個輔助工具,用於定義和運行多容器的 Docker 應用程式。透過 YAML 文件,開發者可以簡單地定義應用程式需要的服務、網路和儲存卷,然後只需一個命令即可啟動和停止整個應用程式的所有服務。它主要功能包含定義多個服務、自動化管理以及提供環境隔離。PostgreSQL 是一個強大、開源的關聯式資料庫管理系統(RDBMS),以其高擴展性、靈活性和可靠性著稱。它支援多種資料類型和先進的查詢功能,適用於各種不同規模和需求的應用程式。其特點包含高性能、擴展性和安全性。pgAdmin 是 PostgreSQL 的官方管理工具,提供了一個功能豐富的圖形化界面,使得資料庫的管理和操作更加直觀和便捷。通過 pgAdmin,開發者可以輕鬆地進行資料庫的設置、管理和查詢操作。其主要功能包含資料庫管理、查詢編輯和資料可視化。

🔗 GitHub 儲存庫:https://github.com/qwe987299/postgresql_and_pgadmin

📝 docker-compose.yml

services:

    postgres:
        image: postgres:latest
        container_name: postgres
        restart: always
        environment:
            POSTGRES_DB: postgres
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            PGDATA: /var/lib/postgresql/data
        volumes:
            - ./db-data:/var/lib/postgresql/data
        ports:
            - "5432:5432"

    pgadmin:
        image: dpage/pgadmin4:latest
        container_name: pgadmin
        restart: always
        environment:
            PGADMIN_DEFAULT_EMAIL: example@gmail.com
            PGADMIN_DEFAULT_PASSWORD: password
            PGADMIN_LISTEN_PORT: 80
        ports:
            - "8888:80"
        volumes:
            - ./pgadmin-data:/var/lib/pgadmin
        links:
            - "postgres:pgsql-server"

這個 Docker Compose 配置檔案定義了兩個服務,分別是 `postgres` 和 `pgadmin`。這兩個服務共同協作,提供了一個完整的 PostgreSQL 資料庫管理解決方案。首先,`postgres` 服務是基於官方的 PostgreSQL 映像檔,它負責運行 PostgreSQL 資料庫伺服器。配置檔中指定了使用最新版本的映像檔,並且將容器命名為 `postgres`。這個容器設定為無論何時停止都會自動重新啟動。環境變數部分設置了資料庫名稱、使用者和密碼。將本地的 `./db-data` 資料夾映射到容器內的 `/var/lib/postgresql/data`,確保資料持久化。最終,將主機的 `5432` Port 映射到容器的 `5432` Port,使外部應用可以透過該 Port 訪問資料庫。接著是 `pgadmin` 服務,它使用的是官方的 pgAdmin 4 映像檔,負責提供一個網頁介面來管理 PostgreSQL 資料庫。這個服務也設定為使用最新版本的映像檔,容器命名為 `pgadmin`,並設定為自動重啟。環境變數包括 pgAdmin 的預設管理員信箱和密碼,以及在容器內監聽的 Port `80`。主機的 `8888` Port 被映射到容器的 `80` Port,使得使用者可以透過 `8888` Port 訪問 pgAdmin 的網頁介面。此外,將本地的 `./pgadmin-data` 資料夾映射到容器內的 `/var/lib/pgadmin` 路徑,以確保配置和資料的持久化。最後,pgAdmin 服務與 `postgres` 服務建立鏈接,使 pgAdmin 可以透過名稱 `postgres` 訪問 PostgreSQL 資料庫。

📝 chown.sh

sudo chown -R 5050:5050 pgadmin-data

執行該指令的用意是改變 pgadmin-data 目錄及其所有子目錄和文件的擁有者和群組,使它們的擁有者和群組都設定為 UID 和 GID 5050。在這個情境下,5050:5050 對應於 pgAdmin 容器內部使用的使用者和群組 ID。這樣做的目的是確保容器內的 pgAdmin 進程對 pgadmin-data 目錄及其內容具有適當的讀寫權限,避免因權限問題導致應用程式無法正常運行。


▲ 為了方便快速建立環境,可以將本文提供的 Git 儲存庫 clone 到自訂的路徑,接著 cd postgresql_and_pgadmin,最後執行 docker compose up -dsh chown.sh

▲ 透過 localhost:8888 進入 pgAdmin 網頁介面,輸入 pgAdmin 預設管理員信箱和密碼即可登入,另外有提供簡體中文介面。

▲ 成功登入後先點「添加服務器」。

▲ 先輸入「名稱」再切換至「連接」頁籤。

▲ 將主機名稱、使用者名稱及密碼等基本資訊輸入上去,這些資訊都可以在一開始的 docker-compose.yml 中找到,最後按「保存」。

▲ 接著 pgAdmin 就會自動連上我們指定的 PostgreSQL 資料庫啦!

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇