iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

在前一天的內容我們有先做出一個前端頁面的雛型,接下來要開始建置後端的部分

首先就是要把資料庫架設起來。因為工作的關係經常要轉移據點,我用來開發的電腦最多會增加到三台,所以資料庫需要:

  1. 簡單好架設:不需要手動下載太多東西。
  2. 方便備份:資料庫的設定、資料等需要方便備份,用來轉移

再加上Docker 很好用的關係,決定用Docker來架設我們的資料庫。

那標題中的"Volume" 是什麼呢?

Docker 中有個「容器(Container)」的概念,我們這次就是要把 PostgreSQL 資料庫架設在一個容器裡。每個容器可以想像成是一台虛擬電腦,裡面安裝著我們要跑的服務。

而「Volume」的角色,就像是一顆外接硬碟。我們透過「掛載(mount)」的方式,讓容器裡的資料同步保存到容器外的實體電腦上。這樣一來,即使容器被刪掉,資料也能保留在電腦上,不會跟著消失。

簡單來說,就是讓 Docker 容器內產生的資料,在本機也有一份副本

那我們開始吧

Step 1. 建立專案資料夾,並且打開cmd將位置移動到該資料夾

mkdir mymomentum-db
cd mymomentum-db

https://ithelp.ithome.com.tw/upload/images/20250916/20160279eMk7rDNBs2.png

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"

https://ithelp.ithome.com.tw/upload/images/20250916/20160279EtH7D3ThxI.png

這份設定檔的意思如下:

  • 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

https://ithelp.ithome.com.tw/upload/images/20250916/20160279OvVkh1ZPXZ.png

Step 4. 啟動 PostgreSQL

docker-compose up -d

https://ithelp.ithome.com.tw/upload/images/20250916/201602790HdMmffXS3.png

Step 5. 用 DBeaver 測試連線

打開 DBeaver,新增連線,輸入以下設定:
項目 值
Host localhost
Port 5432
Database mymomentumdb
User mymomentum
Password secret123
https://ithelp.ithome.com.tw/upload/images/20250916/20160279TdbGZ6ILgM.png

https://ithelp.ithome.com.tw/upload/images/20250916/20160279xgXP3MHJ0h.png

https://ithelp.ithome.com.tw/upload/images/20250916/20160279Sc4GeU8K4X.png

以上,就完成了簡單、方便備份、轉移的 PostgreSQL 開發環境架設流程。透過 Docker 搭配 Volume 掛載的方式,不僅讓資料持久化儲存,更讓未來的搬移、分享、甚至部署都變得更輕鬆。這份設定檔也會成為未來每次開發時的好幫手,只要一行指令就能還原出一個乾淨、完整的資料庫環境。

接下來,我們就可以開始設計資料表結構,實際把 MyMomentum 的資料儲存起來囉 💪

現在前端有畫面,資料庫也建置完成,下一步就是把表設計出來存資料。

PS:
本來要用pgdata來做資料轉移(不同電腦用相同pgdata),讓我不管在哪台電腦都可以用相同的資料進行開發,結果後來那個pgdata直接導致資料庫起不來,後來就沒這樣用了,但是mount pgdata的做法有留下,我覺得沒有不妥。


上一篇
首頁設計:從使用者流程到前端雛型
下一篇
Activities 與 Records:資料表設計筆記
系列文
我的時間到底去哪裡了!? – 個人時間數據系統開發挑戰15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言