Docker 架設網站教學|Ubuntu Nginx MySQL 一次搞懂企業級部署架構

在現代網站架構中,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 備份與還原教學(避免主文過長)。