「在我電腦明明可以跑的?」WordPress Docker 容器化部署終極教學

2025/11/27 | 架構與效能優化

「在我電腦明明可以跑的?」WordPress Docker 容器化部署終極教學

嘿,我是浪花科技的 Eric。身為一個在程式碼跟伺服器之間打滾多年的工程師,我聽過最讓人血壓飆高的話,莫過於那句經典的:「在我電腦上明明可以跑啊!」這句話背後,通常藏著無數個加班的夜晚、混亂的環境設定,以及專案管理的巨大災難。

尤其是在開發 WordPress 網站時,本機開發環境、測試環境、到最終的正式上線環境,只要有一丁點 PHP 版本、資料庫設定、或 Apache/Nginx 配置上的差異,就可能導致網站出現意想不到的錯誤。為了解決這個長久以來的痛點,今天,我要帶你走進 Docker 的世界,用容器化技術,徹底終結環境不一致的惡夢。這篇 Docker 容器化部署教學,將會是你邁向現代化網站開發與維運流程的關鍵一步。

為什麼你的 WordPress 網站需要 Docker?

在我們動手之前,我得先囉嗦一下,讓你真正明白為什麼 Docker 這麼神奇,以及它能為你的 WordPress 開發流程帶來什麼革命性的改變。

傳統部署方式的痛點

想像一下傳統的開發流程:

  • 你在自己的 Windows 電腦上用 XAMPP 或 MAMP 裝了個開發環境。
  • 團隊的另一位設計師用的是 Mac,他也有自己的 MAMP。
  • 公司的測試機是台老舊的 Linux 主機,PHP 版本可能還停在 7.4。
  • 最終上線的雲端主機,又是另一個全新的 Ubuntu 環境。

在這一連串的過程中,只要一個環節出錯,例如 PHP 擴充套件沒裝到、資料庫編碼不同,網站可能就直接跟你鬧脾氣。除錯起來曠日廢時,而且非常痛苦。相信我,這會省下你未來無數個「在我電腦上明明可以跑」的夜晚。

Docker 容器化帶來的四大好處

Docker 就像一個「標準化的貨櫃」,它會把你的應用程式(WordPress)、以及它所需要的所有東西(PHP、Apache、資料庫等)全部打包在一起。這個「貨櫃」不論被搬到哪裡——你的電腦、同事的電腦、或是雲端主機——裡面的東西跟環境都會一模一樣。

  • 環境一致性: 從開發到上線,確保每個環境都完全相同,徹底消滅「環境不一致」造成的問題。
  • 資源隔離: 每個 Docker 容器都是獨立運作的,你可以在同一台主機上跑好幾個不同專案,它們的 PHP 版本、資料庫可以完全不同,互不干擾。對於接案的開發者或工作室來說,這簡直是天大的福音。
  • 快速部署與擴展: 只需要一個設定檔,你就能在幾分鐘內啟動一個完整的 WordPress 環境。未來需要應付高流量時,要橫向擴展(Scalability)也變得非常容易。這對於追求極致網站效能的專案來說至關重要。
  • 版本控制與可攜性: 你可以將整個環境的設定檔(Dockerfile, docker-compose.yml)放進 Git 進行版本控制,團隊成員只要 `git pull`,就能複製出跟你一模一樣的開發環境。

開始前的準備:你需要什麼?

在我們正式開始這趟 Docker 容器化部署教學之前,請確保你的電腦上已經安裝了以下工具。別擔心,安裝過程都很直觀,網路上也有大量的教學資源。

  • Docker Desktop: 這是 Docker 的官方桌面應用程式,整合了 Docker Engine、Docker CLI client 以及 Docker Compose。無論你是用 Windows、macOS 還是 Linux,都能輕鬆安裝。請至 Docker 官網下載。
  • 一個好的程式碼編輯器: 例如 VS Code、Sublime Text 等,方便我們編輯設定檔。
  • 終端機(Terminal)或命令提示字元(Command Prompt): 我們會需要下一些指令來操作 Docker。

WordPress Docker 容器化部署實戰教學

好了,理論說得夠多了,讓我們捲起袖子,實際操作一遍!我們會使用 Docker Compose 這個強大的工具,它能讓我們用一個 YAML 檔案來定義並運行多個 Docker 容器的應用程式(例如 WordPress + 資料庫)。

步驟一:建立你的專案結構

首先,在你的電腦上建立一個新的專案資料夾,例如 `my-wp-project`。然後在終端機中進入這個資料夾。

我們的目標結構很簡單,只需要一個檔案:

my-wp-project/
└── docker-compose.yml

步驟二:撰寫 `docker-compose.yml` 設定檔

這一步是整個教學的核心。`docker-compose.yml` 檔案定義了我們的服務、網路和資料卷。請在 `my-wp-project` 資料夾中建立這個檔案,並貼上以下內容。

我得囉嗦一下,這個檔案裡的每一個設定都非常重要,請務必仔細看懂我的註解。特別是 `volumes` 的部分,它關乎你的網站資料是否能夠永久保存,如果沒設定好,容器一關閉,你辛辛苦苦上傳的圖片和文章可能就灰飛煙滅了!

# docker-compose.yml

# '3.8' 是我們使用的 docker-compose 檔案格式版本
version: '3.8'

# 'services' 區塊定義了我們的應用程式包含哪些容器
services:
  # 第一個服務:資料庫,我們使用 MariaDB
  db:
    image: mariadb:10.6 # 指定使用的 Docker 映像檔,這裡是 MariaDB 10.6 版本
    container_name: my_wp_db # 給容器取一個好記的名字
    command: '--default-authentication-plugin=mysql_native_password' # 為了相容性設定
    volumes:
      - db_data:/var/lib/mysql # 這行超重要!將資料庫檔案存在一個名為 'db_data' 的 Docker Volume 中,確保資料持久化
    restart: always # 如果容器掛了,自動重啟
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_root_password # 設定 root 使用者的密碼,請務必換成你自己的高強度密碼
      MYSQL_DATABASE: wordpress # 建立一個名為 wordpress 的資料庫
      MYSQL_USER: wordpressuser # 建立一個使用者
      MYSQL_PASSWORD: your_strong_user_password # 設定該使用者的密碼,請務必換成你自己的高強度密碼

  # 第二個服務:WordPress 本身
  wordpress:
    depends_on:
      - db # 這行告訴 Docker,必須先啟動 db 服務,再啟動 wordpress 服務
    image: wordpress:latest # 使用官方最新的 WordPress 映像檔
    container_name: my_wp_app # 給容器取一個好記的名字
    ports:
      - "8000:80" # 將我們電腦的 8000 port 對應到容器內的 80 port,這樣就能透過 http://localhost:8000 訪問網站
    restart: always
    volumes:
      - ./wp-content:/var/www/html/wp-content # 這行也很重要!將本地的 wp-content 資料夾掛載到容器裡,方便我們開發佈景主題和外掛
    environment:
      WORDPRESS_DB_HOST: db:3306 # 資料庫主機位置,'db' 就是我們上面定義的資料庫服務名稱
      WORDPRESS_DB_USER: wordpressuser # 對應上面 db 服務設定的使用者名稱
      WORDPRESS_DB_PASSWORD: your_strong_user_password # 對應上面 db 服務設定的使用者密碼
      WORDPRESS_DB_NAME: wordpress # 對應上面 db 服務設定的資料庫名稱

# 'volumes' 區塊定義了我們需要用到的 Docker Volume
volumes:
  db_data: {}

重要提示: 請務必將 `your_strong_root_password` 和 `your_strong_user_password` 換成你自己的高強度密碼。在正式專案中,我們會使用更安全的方式(例如 `.env` 檔案)來管理這些機密資訊,但為了教學簡化,我們先這樣設定。

步驟三:啟動你的 WordPress 容器!

設定檔寫好後,我們就可以用一行指令來啟動所有服務。在終端機中,確認你位於 `my-wp-project` 資料夾下,然後執行:

docker-compose up -d

這個指令是什麼意思呢?

  • `docker-compose up`: 根據 `docker-compose.yml` 檔案來建立並啟動容器。
  • `-d`: 代表 `detached mode`,也就是在背景執行。這樣你的終端機就可以繼續做其他事情。

第一次執行時,Docker 會需要一些時間去下載 MariaDB 和 WordPress 的映像檔(Image),這取決於你的網路速度。下載完成後,容器就會在背景啟動。

步驟四:驗證與安裝

容器啟動後,你可以用以下指令檢查它們的運行狀態:

docker-compose ps

如果看到 `my_wp_db` 和 `my_wp_app` 兩個容器的狀態都是 `Up` 或 `running`,那就代表成功了!

現在,打開你的瀏覽器,輸入 `http://localhost:8000`。

搞定了!看到 WordPress 熟悉的安裝畫面,是不是很有成就感?接下來,你就可以像平常一樣,選擇語言、設定網站標題、管理員帳號密碼,完成安裝程序。

進階管理與技巧

學會了基本的部署,我們再來看看一些常用的管理指令和進階技巧。

常用的 Docker Compose 指令

  • 停止並移除容器: `docker-compose down`
  • 查看所有容器的 log: `docker-compose logs -f`
  • 進入容器內部(例如進入 WordPress 容器的 shell): `docker-compose exec wordpress bash`

如何客製化你的 WordPress 環境?

有時候,我們可能需要安裝特定的 PHP 擴充套件,或是調整 `php.ini` 的設定(例如上傳檔案大小限制)。這時候,我們就需要用到 `Dockerfile` 來建立自己的客製化 WordPress 映像檔。這部分內容較為進階,但它賦予了 Docker 極大的彈性,讓你可以打造完全符合專案需求的環境。

結論:擁抱現代化的開發流程

恭喜你!你已經完成了這份 WordPress Docker 容器化部署教學。從今天起,你擁有了一套標準化、可複製、且極度可靠的 WordPress 開發與部署流程。無論是個人專案、團隊協作,還是管理多個客戶的網站,Docker 都將成為你最強大的後盾。

當然,Docker 的世界博大精深,我們今天只是踏出了第一步。接下來還有網路設定、正式環境部署(例如搭配 Nginx-Proxy-Manager 處理 SSL)、以及 CI/CD 自動化流程等更多有趣的挑戰等著你。

在浪花科技,我們深信好的工具與流程是打造高品質網站的基石。如果你在實作過程中遇到任何問題,或是希望為你的企業導入更專業、更有效率的網站開發與維運解決方案,歡迎隨時與我們聯繫。

準備好讓你的 WordPress 專案更上一層樓了嗎?立即聯繫浪花科技,讓我們為您提供專業的技術諮詢與解決方案!

 
立即諮詢,索取免費1年網站保固