網頁

2023/8/25

Docker 安裝PostgreSQL資料庫

Docker安裝並運行PostgreSQL資料誤的方式如下。


範例環境:

  • MacBook Apple M1 Pro
  • macOS Ventura 13.01
  • Docker version 24.0.2


建立Docker Volume

執行docker volume create postgres-data建立postgres-data的volume,準備用來存放在docker容器中運行的 postgresql資料庫的資料。

% docker volume create postgresql-data
postgresql-data


安裝PostgreSQL

執行docker pull postgres:15下載postgres版本15的image。

% docker pull postgres:15
15: Pulling from library/postgres
4ee097f9a366: Pull complete
76feac26ff4c: Pull complete
cd38eeb1c7ed: Pull complete
c5a6aa48270c: Pull complete
8400a13ec8f7: Pull complete
0bddf18c4a6e: Pull complete
287cdab72fa1: Pull complete
d55736c8451f: Pull complete
d84639c1fc9e: Pull complete
a7a76ec02575: Pull complete
b0c360759201: Pull complete
118910365168: Pull complete
f6a1c2f3f6a0: Pull complete
Digest: sha256:a5e89e5f2679863bedef929c4a7ec5d1a2cb3c045f13b47680d86f8701144ed7
Status: Downloaded newer image for postgres:15
docker.io/library/postgres:15

執行docker run --name postgres -d -it -p 5432:5432 --restart always -v postgresql-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=12345 postgres:15來運行postgres container。

參數說明:

  • -p 5432:5432 - 把本地的5432 port映射到容器的5432 port。
  • --restart always - docker重啟後容器也會一同重啟。
  • -v postgresql-data:/var/lib/postgresql/data - 把剛建立的volume postgresql-data對到容器的/var/lib/postgresql/data,而該目錄為容器中PostgreSQL資料庫儲存資料的目錄(porgres image的Dockerfile的PGDATA為此路徑)。
  • -e POSTGRES_PASSWORD=12345 - 提供容器運行時的環境變數POSTGRES_PASSWORD=12345
% docker run --name postgres -d -it -p 5432:5432 --restart always -v postgresql-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=12345 postgres:15
541af122d703ff7e2d920f54d13d44c928e7fec035766f060c5dca64f208085e

執行docker ps查看運行中的postgres容器。

% docker ps
CONTAINER ID   IMAGE                 COMMAND                   CREATED          STATUS          PORTS                                                                                                         NAMES
541af122d703   postgres:15           "docker-entrypoint.s…"   51 seconds ago   Up 51 seconds   0.0.0.0:5432->5432/tcp                                                                                        postgres


連線

開啟資料庫管理工具,例如DBeaver,建立新連線。

  • [Host]維持預設為localhost
  • [Database]維持預設為postgres
  • [Username]維持預設為postgres
  • [Password]填入剛運行postgres容器時的POSTGRES_PASSWORD的值,即12345

設定完後按Finish完成並連線到docker的postgres資料庫。




沒有留言:

張貼留言