前兩篇介紹了 Controller
及 Service
的用法,接下來預計分享 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_EMAIL
及 PGADMIN_DEFAULT_PASSWORD
即可登入。
成功登入後,我們在主畫面點選 Add New Server
接著在 general
輸入 db 的名稱,如下圖範例,我輸入的是 itseed
再來,我們要來連接到用 docker build 出來的 Postgresql,我們在 Host name/address
輸入剛剛記下的 IPAddress
。
Username
填入 postgres
,Password
則是上面執行指令時輸入的 POSTGRES_PASSWORD
,如下圖所示,都沒問題後就按 Save
成功畫面:
小結
今天分享了使用 docker 建立 Postgresql 以及 pgAdmin,然後可以在 pgAdmin 成功連接資料庫。下一篇預計進入 TypeOrm 操作 Postgresql 的分享,如果文章有任何錯誤或建議,歡迎告知!
參考來源
Local Development Set-Up of PostgreSQL with Docker