「在我電腦明明可以跑的?」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 專案更上一層樓了嗎?立即聯繫浪花科技,讓我們為您提供專業的技術諮詢與解決方案!






