用 Nest.js 開發 API 吧 (五) — Postgresql

Alan Syue
5 min readDec 20, 2020

--

Nest.js 官方網站

前兩篇介紹了 ControllerService 的用法,接下來預計分享 Nest.js 及 TypeOrm。再介紹 TypeOrm 之前,我們需要先來架設資料庫(db),要使用的是 Postgresql。

用 Docker 啟用 Postgresql

首先,先 pull Postgresql 的 docker image

docker pull postgres

再來,建立一個資料夾,用來儲存 Postgresql 的紀錄。

mkdir ${HOME}/postgres-data/

接著,執行下面的指令,build 出 Postgresql 的 container

docker run -d \
--name dev-postgres \
-e POSTGRES_PASSWORD={YOUR PASSWORD} \
-v ${HOME}/postgres-data/:/var/lib/postgresql/data \
-p 5432:5432 \
postgres

用 Docker 啟用 pgAdmin

接下來我們要來建立 pgAdmin,透過 pgAdmin 就能有 GUI 來管理 Postgresql。
第一步也是先 pull docker image:

docker pull dpage/pgadmin4

再來執行以下指令,build 出 pgAdmin 的 container:

docker run -d \
--name dev-pgadmin \
-e 'PGADMIN_DEFAULT_EMAIL={YOUR EMAIL ACCOUNT}' \
-e 'PGADMIN_DEFAULT_PASSWORD={YOUR PASSWORD}' \
-p 80:80 \
dpage/pgadmin4

啟用 pgAdmin 連接本地端 Postgresql

我們先在 terminal 輸入:

docker ps

根據上圖,可以看到已經建立兩個 container 了,接著輸入:

docker inspect dev-postgres -f "{{json .NetworkSettings.Networks }}"

可以看到以下資訊:

{
"bridge":{
"IPAMConfig":null,
"Links":null,
"Aliases":null,
"NetworkID":"dc0eeecb88ba55574ec6854415e1dff0f65a56061967fed2146aae95e34cf814",
"EndpointID":"9f820ae73f6293b6293c29ce3aabba4dc56b2d8a28382f5c490e78c6c59b0df9",
"Gateway":"172.17.0.1",
"IPAddress":"172.17.0.2",
"IPPrefixLen":16,
"IPv6Gateway":"",
"GlobalIPv6Address":"",
"GlobalIPv6PrefixLen":0,
"MacAddress":"02:42:ac:11:00:02",
"DriverOpts":null
}
}

我們把其中的 "IPAddress":"172.17.0.2" 記下來,然後再瀏覽器輸入:
http://localhost:80,會到 pgAdmin 的登入畫面。輸入在 用 Docker 啟用 pgAdmin 創建的 PGADMIN_DEFAULT_EMAILPGADMIN_DEFAULT_PASSWORD 即可登入。

成功登入後,我們在主畫面點選 Add New Server

接著在 general 輸入 db 的名稱,如下圖範例,我輸入的是 itseed

再來,我們要來連接到用 docker build 出來的 Postgresql,我們在 Host name/address 輸入剛剛記下的 IPAddress
Username 填入 postgresPassword 則是上面執行指令時輸入的 POSTGRES_PASSWORD,如下圖所示,都沒問題後就按 Save

成功畫面:

小結

今天分享了使用 docker 建立 Postgresql 以及 pgAdmin,然後可以在 pgAdmin 成功連接資料庫。下一篇預計進入 TypeOrm 操作 Postgresql 的分享,如果文章有任何錯誤或建議,歡迎告知!

參考來源

Local Development Set-Up of PostgreSQL with Docker

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Alan Syue
Alan Syue

Written by Alan Syue

Backend Engineer at UPN | Love to share everything

No responses yet

Write a response