iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
佛心分享-SideProject30

我的時間到底去哪裡了!? – 個人時間數據系統開發挑戰系列 第 27

Day27:MyMomentum Docker 部署——四個服務一起跑的代價

  • 分享至 

  • xImage
  •  

今日目標

今天的目標很明確:把 MyMomentum 正式部署到 EC2 上,讓整個系統在雲端以 Docker 形式跑起來。

理論上,這是整個系列中最重要的環節之一,完成之後我就能在任何地方輸入一行網址,看到屬於自己的服務。

以下是今天的待辦清單

MyMomentum Docker 部署 TODO List (全容器化)

階段三:專案準備

[✔] 上傳專案代碼到 EC2

[✔] 建立生產環境配置檔案

[✔] 建立完整的 Docker Compose 檔案 (包含 Nginx)

階段四:Docker 建置

[✔] 建立後端 Dockerfile

[✔] 建立前端 Dockerfile

[✔] 建立 Nginx 配置檔案

[ ] 建置所有 Docker 映像檔:docker-compose build

階段五:資料庫初始化

[ ] 啟動 PostgreSQL 容器

[ ] 執行資料庫遷移

[ ] 驗證資料庫連線


其實實際的待辦清單還有一半以上,但我做到一半就發現做不完。


執行過程

  1. 用 git 上傳程式碼,接著在 EC2 上把程式碼抓下來 ⇒ OK
  2. 將敏感資訊從程式碼分離出來(原本寫死在yaml檔),然後使用環境變數管理,簡單講就是為 EC2 這個執行環境特別弄一個設定檔 application-prod.yml ⇒ OK
  3. 建立docker-compose.yml 一次起四個服務:postgres , backend , frontend , nginx ⇒ OK
  4. 前後端 Dockerfile 不是問題,Nginx 配置問 AI ⇒ OK

接著當我把所有檔案搬到 EC2 開始建置的時候,問題開始出現。

前端建置問題、TypeScript 編譯問題、環境變數載入問題等等等。
雖然最後成功將所有服務都跑起來了,但花了三個小時左右跑建置、解決問題,打開網頁卻還是一片空白。

https://ithelp.ithome.com.tw/upload/images/20251009/20160279W4hUaYSsts.png

乾,這樣不行

時間不夠了。


這次的部署發現很多問題,其中最嚴重的問題:

Debug 困難— 不知道是哪個服務出問題

依賴關係複雜— 任一服務失敗可能影響整體啟動

錯誤定位困難— 日誌混在一起,不容易追蹤

測試困難— 無法單獨驗證每個服務

多服務同時部署這件事,對現在的我來說太早了,就算錯也不知道錯在哪裡。


後記:部署策略的反思

接下來我打算改成分階段部署,讓每個服務先單獨跑起來:

先上線後端 API → 驗證 DB → 再接上前端與 Nginx。

問題會更好 trace,也容易 rollback。
確認穩定後再用 Nginx 做整合。

但是明天開始連假,哭阿 😭


上一篇
Day28:SSH 連不上?重開數據機也會出事!順便完成專案上傳與 Docker 初始化
下一篇
Day28:搞懂那些我看不懂的部署名詞
系列文
我的時間到底去哪裡了!? – 個人時間數據系統開發挑戰30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言