記得我 2020 年進入公司擔任前端工程師,公司團隊就是使用 Docker 服務,當時小菜鳥的我還有嘗試架 VM 超級痛苦的 QQ
有了 Docker 真的方便許多!而且 Container 通常比完整 VM 更輕量、啟動也更快
Docker 可以把它想成把「程式 + 執行環境 + 需要的套件」一起打包起來,讓它在不同電腦上都能用差不多的方式執行,避免一些套件、環境問題和相容性問題,讓同一包程式在不同電腦都能夠順利地跑起來。
最常見的情境是這樣你的專案可能需要 Node.js 18、PostgreSQL、Redis、某些環境變數,甚至還有前端、後端、DB 三個服務。如果不用 Docker,新同事拿到專案後,可能要自己一個一個安裝版本、改設定,很容易出現「我電腦可以跑,你的不能跑」。
例如一個專案可能會有:
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
backend:
build: ./backend
ports:
- "5000:5000"
postgres:
image: postgres:16
使用 Docker 只要執行 docker compose up Docker 就會幫你把前端、後端、資料庫一起啟動啦!
如果只是寫一個很單純的 React 網頁,沒有後端、資料庫,其實不一定需要 Docker。
但下面幾種情況就非常適合:
1.專案有很多服務
React
Node.js
PostgreSQL
Redis
Nginx
2.團隊開發
希望大家環境一致
A:Node 18 可以
B:Node 20 壞掉
C:PostgreSQL 版本不同
3.需要部署到 Server
開發環境跟正式環境可以用同一套 Image。
4.不想把一堆東西直接裝在自己的 Windows 上
例如: PostgreSQL、Redis、Linux 套件都可以放在 Container 裡。
總結就是 : Docker 的主要目的不是拿來寫程式,而是把程式「需要的執行環境固定下來」。
今天先到這邊~明天將會介紹常用的 Docker 指令以及相關設定