在前一天的內容我們有先做出一個前端頁面的雛型,接下來要開始建置後端的部分
首先就是要把資料庫架設起來。因為工作的關係經常要轉移據點,我用來開發的電腦最多會增加到三台,所以資料庫需要:
再加上Docker 很好用的關係,決定用Docker來架設我們的資料庫。
那標題中的"Volume" 是什麼呢?
Docker 中有個「容器(Container)」的概念,我們這次就是要把 PostgreSQL 資料庫架設在一個容器裡。每個容器可以想像成是一台虛擬電腦,裡面安裝著我們要跑的服務。
而「Volume」的角色,就像是一顆外接硬碟。我們透過「掛載(mount)」的方式,讓容器裡的資料同步保存到容器外的實體電腦上。這樣一來,即使容器被刪掉,資料也能保留在電腦上,不會跟著消失。
簡單來說,就是讓 Docker 容器內產生的資料,在本機也有一份副本。
那我們開始吧
Step 1. 建立專案資料夾,並且打開cmd將位置移動到該資料夾
mkdir mymomentum-db
cd mymomentum-db
Step 2. 建立 docker-compose.yml
建立 docker-compose.yml
,內容如下(只含 PostgreSQL):
services:
postgres:
image: postgres:16
container_name: mymomentum-postgres
restart: unless-stopped
environment:
POSTGRES_USER: mymomentum //可以更動
POSTGRES_PASSWORD: secret123 //可以更動
POSTGRES_DB: mymomentumdb
volumes:
- ./pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
這份設定檔的意思如下:
image: postgres:16
:使用官方 PostgreSQL 第 16 版的映像檔container_name
:指定容器的名稱(自己看 log 或 debug 時比較方便)restart: unless-stopped
:除非手動停止,否則異常關閉時會自動重啟environment
:初始化資料庫時會建立一組使用者、密碼,以及一個預設資料庫volumes
:把本機的 pgdata
資料夾掛載到容器中,讓資料不會因為重啟容器而消失ports
:把容器的 PostgreSQL port (5432
) 映射到本機,這樣 DBeaver 等工具才連得到Step 3. 建立資料掛載資料夾 pgdata
mkdir pgdata
Step 4. 啟動 PostgreSQL
docker-compose up -d
Step 5. 用 DBeaver 測試連線
打開 DBeaver,新增連線,輸入以下設定:
項目 值
Host localhost
Port 5432
Database mymomentumdb
User mymomentum
Password secret123
以上,就完成了簡單、方便備份、轉移的 PostgreSQL 開發環境架設流程。透過 Docker 搭配 Volume 掛載的方式,不僅讓資料持久化儲存,更讓未來的搬移、分享、甚至部署都變得更輕鬆。這份設定檔也會成為未來每次開發時的好幫手,只要一行指令就能還原出一個乾淨、完整的資料庫環境。
接下來,我們就可以開始設計資料表結構,實際把 MyMomentum 的資料儲存起來囉 💪
現在前端有畫面,資料庫也建置完成,下一步就是把表設計出來存資料。
PS:
本來要用pgdata來做資料轉移(不同電腦用相同pgdata),讓我不管在哪台電腦都可以用相同的資料進行開發,結果後來那個pgdata直接導致資料庫起不來,後來就沒這樣用了,但是mount pgdata的做法有留下,我覺得沒有不妥。