在現代網站架構中,Ubuntu + Docker + Nginx + MySQL 已經成為主流部署方式。透過容器化技術,可以在同一台主機上快速建立多個網站環境,並且彼此完全隔離。
這種架構的核心價值是:一台主機,多個網站,獨立運行,互不影響,非常適合企業網站、開發環境與 SaaS 系統。
Docker 架構與運作原理
Docker 是一種容器技術,每個服務都是獨立環境,不依賴整個作業系統。
- Nginx:負責網站輸出
- MySQL:負責資料儲存
- Docker:負責環境隔離與部署
與傳統 VM 相比,Docker 更輕量、啟動更快,也更適合多網站架構。
Ubuntu + Docker 安裝
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
docker --version
這一步是建立 Docker 執行環境,確保後續容器可以正常運行。
👉 延伸閱讀:Docker 安裝與基本指令
Nginx 多網站部署實戰
在同一台主機上,我們建立兩個獨立網站,彼此完全隔離。
👉 架構概念:
- Site A → 8081
- Site B → 8082
- Nginx 容器負責網站服務
Step 1:建立網站資料夾
sudo mkdir -p /srv/site-a/html
sudo mkdir -p /srv/site-b/html
網站內容會直接放在主機,避免容器刪除導致資料遺失。
Step 2:啟動 Site A
sudo docker run -d \
--name site-a \
-p 8081:80 \
-v /srv/site-a/html:/usr/share/nginx/html \
nginx
👉 開啟網址:http://IP:8081
Step 3:啟動 Site B
sudo docker run -d \
--name site-b \
-p 8082:80 \
-v /srv/site-b/html:/usr/share/nginx/html \
nginx
👉 開啟網址:http://IP:8082
MySQL 資料庫架構設計
本架構使用單一 MySQL 容器提供多網站資料服務。
sudo mkdir -p /srv/mysql-data
sudo docker run -d \
--name mysql-main \
-e MYSQL_ROOT_PASSWORD=rootpass \
-p 3306:3306 \
-v /srv/mysql-data:/var/lib/mysql \
mysql:8
👉 所有網站共用同一個資料庫,降低資源浪費。
👉 延伸閱讀: Docker Web Server 多網站架構教學
架構優勢與實務應用
- ✔ 多網站完全隔離
- ✔ 容器可快速重建
- ✔ 資源使用率低
- ✔ 適合企業與 SaaS 系統
- ✔ 可擴展成 Kubernetes 架構
這種設計方式可以讓伺服器像「網站工廠」,隨時新增或刪除服務。
👉 延伸閱讀: Docker Compose 多容器管理教學
FAQ 常見問題
Docker 為什麼適合多網站架構?
因為每個容器都是獨立環境,不會互相影響,可以同時運行多個網站。
為什麼要把網站資料放在 /srv?
這樣可以避免容器刪除導致資料遺失,也方便備份與搬移。
MySQL 可以給多網站使用嗎?
可以,一個 MySQL 容器可以支援多個資料庫與多個網站。
這種架構適合正式環境嗎?
適合中小企業與開發環境,流量變大可升級負載平衡架構。
如果要備份怎麼辦?
備份已獨立成專文,請參考 Docker 備份與還原教學(避免主文過長)。
