# Day 3 - 把專案跑起來:前後端與 Docker 入門 ## 劇情背景 一早,海克絲神色匆忙地走了過來。 「早安!今天有個緊急狀況要跟你說。」 「怎麼了?發生什麼事?」 「我的合夥人剛傳訊息來,說她這週想看看專案目前的進度。她不是工程師,但很在意產品能不能『跑起來』給她看。」 「所以⋯⋯我們要把專案跑起來給她看?」 「沒錯!但在那之前,你得先搞懂這個專案到底是怎麼組成的。一個完整的系統通常有三大部分:前端、後端、還有資料庫。」 ![confused](https://hackmd.io/_uploads/BJioNNzHbx.png) --- ## 學習目標 - 了解前端、後端、資料庫各自的角色 - 了解什麼是 Docker 以及為什麼需要它 - 理解 Container(容器)的概念 - 成功啟動 LiveFit 專案的開發環境 - 驗證前端、後端、資料庫都正常運作 --- ## 核心概念 ### 1) 前端、後端、資料庫是什麼? 海克絲用電商網站來比喻: | 角色 | 電商網站比喻 | 系統中的角色 | |------|----------|--------------| | **前端 (Frontend)** | 網頁商城的頁面(商品展示、購物車、結帳畫面) | 使用者看到的畫面,負責互動與呈現 | | **後端 (Backend)** | 訂單處理中心(訂單處理、庫存檢查、付款驗證) | 處理商業邏輯,決定要做什麼、怎麼做 | | **資料庫 (Database)** | 商品倉庫 | 儲存所有資料(會員資料、訂單紀錄、商品庫存) | **實際運作流程:** 1. 使用者在前端點擊「購買課程」按鈕 2. 前端發送請求給後端 3. 後端檢查使用者餘額、課程是否可購買 4. 後端把購買紀錄存到資料庫 5. 後端回傳結果給前端 6. 前端顯示「購買成功」畫面 **LiveFit 專案的技術棧:** - 前端:Vue.js - 後端:Node.js - 資料庫:PostgreSQL ### 2) 為什麼需要 Docker? 在軟體開發中,最常見的問題就是: - 「在我的電腦上可以跑啊!」 - 「為什麼換一台電腦就壞掉了?」 這是因為每台電腦的環境都不一樣(作業系統、軟體版本、設定等)。 **Docker 的解決方案:** > Docker 可以把整個執行環境打包成一個「容器」,確保每個人的開發環境一致,避免「在我電腦可以跑」的問題。 ### Docker 是什麼? Docker 是一個「容器化平台」,可以把它想成: **生活比喻:** > 想像你要搬家,與其把東西一件一件搬,不如把整個房間打包成一個貨櫃。 > 不管搬到哪裡,打開貨櫃就是一模一樣的環境! ### Container(容器)是什麼? Container 就是 Docker 打包出來的「貨櫃」,裡面包含: - 程式碼 - 執行環境 - 系統函式庫 - 設定檔 **重要特性:** - 輕量:比虛擬機器更小、更快 - 隔離:每個容器獨立運作,互不干擾 - 可攜:在任何支援 Docker 的環境都能運行 ### 3) LiveFit 的三個服務 前任後端雖然把專案搞得一團糟,但至少有一件事做對了——他用 Docker 把整個環境打包好了。只要你安裝 Docker,一個指令就能把三個服務全部跑起來! 我們的專案會啟動三個 Container: | 服務 | 說明 | Port | |------|------|------| | Frontend | Vue.js 前端應用 | 3000 | | Backend | Node.js 後端 API | 8080 | | Postgres | PostgreSQL 資料庫 | 5432 | - Docker 的 Port 就像是大樓的分機號碼:撥打指定的「號碼」,就能精準連接到容器內部的「特定服務」。 - localhost:就是「你使用的這台電腦」,也就是大樓本體。 - /healthcheck:用來確認程式碼有沒有「壞掉」的指令。 ## 今日任務 ### 任務內容 1. **必做:完成遊戲測驗** - 進入遊戲完成 Day 3 關卡 - 👉 **[點此進入遊戲](https://hexschool.github.io/backend-camp-game/)** 2. 非必做:攻略以下兩個任務 * [任務一:資料庫與 Docker 環境建立](https://rpg.hexschool.com/#/training/12063182914150888561/board/content/12063182914150888562_12063182914150888575?tid=12063182914152027037) * [任務二:把前後端 code on 起來](https://rpg.hexschool.com/#/training/12063182914150888561/board/content/12063182914150888562_12063182914150888575?tid=12063182914152027038) --- ## 測驗題目預覽 ### 前端、後端、資料庫篇 (4 題) 1. 前端的主要職責是什麼? 2. 後端的主要職責是什麼? 3. 資料庫的主要職責是什麼? 4. 使用者點擊「購買課程」後,系統的處理順序是什麼? ### Docker 觀念篇 (3 題) 5. Docker 主要解決什麼問題? 6. Container(容器)是什麼? 7. 為什麼這個專案要用 Docker? ### LiveFit 環境篇 (3 題) 8. LiveFit 專案啟動後會有幾個 Container? 9. 前端服務跑在哪個 Port? 10. 如何確認後端服務是否正常運作? --- ## 遊戲連結 請進入遊戲完成 Day 3 關卡: 👉 **[點此進入遊戲](https://hexschool.github.io/backend-camp-game/)** ## 回報格式(確認打卡細節) 1. 完成遊戲中的測驗並截圖完成畫面 2. 到體驗營 Discord 的[每日活動頻道](https://discord.com/channels/801807326054055996/1446368763581562880),找到當天任務的討論串 3. 在討論串留言貼上截圖,打卡儀表板會自動記錄你的成績 4. 分享一下此關卡有哪些知識點讓你印象深刻,甚至有透過 AI 服務延伸學習 ![截圖 2026-01-02 下午5.16.29](https://hackmd.io/_uploads/BJig6WSEZg.png) --- ## 海克絲的叮嚀 > 「太好了,專案跑起來了!這樣我就可以跟合夥人說進度正常。Docker 是後端工程師的好夥伴,以前我們要花好幾天設定環境,現在一個指令就搞定。今天成功把環境架起來,代表你已經跨過了最重要的一關。加油,今天結束後你就能親眼看到 LiveFit 在你電腦上運作了!」 ### 關於海克絲 其實海克絲以前是工程師,還當過全端技術主管,寫了快十年的 Code。她也練重訓、當過瑜伽老師,後來決定把兩個專業結合起來,開了這間健身房,想做一個真正能幫助人的運動媒合平台。 > 「工程師的經驗讓我知道怎麼設計系統,健身教練的經驗讓我知道怎麼照顧人。所以啊,你要是敢給我爆肝加班,我可是會直接把你從電腦前拖走的喔。」