一、通過docker compose 自動一鍵部署WordPress
1. 準備工作
- 安裝 Docker 和 Docker Compose
- 確保服務器有公網 IP(如果需要外部訪問)
- 域名(可選,用于綁定網站)
2. 創建 Docker Compose 配置文件
創建一個docker-compose.yml
文件,內容如下:
version: '3.8'services:# WordPress服務wordpress:image: wordpress:latestrestart: alwaysports:- "80:80" # 將容器的80端口映射到主機的80端口environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: your_secure_passwordWORDPRESS_DB_NAME: wordpress_dbvolumes:- wordpress_data:/var/www/html # 持久化存儲WordPress數據depends_on:- db# 數據庫服務db:image: mysql:5.7restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: root_secure_passwordMYSQL_DATABASE: wordpress_dbMYSQL_USER: wordpressMYSQL_PASSWORD: your_secure_passwordvolumes:- db_data:/var/lib/mysql # 持久化存儲數據庫數據volumes:wordpress_data:db_data:
3. 啟動服務
在配置文件所在目錄執行以下命令:
# 啟動服務
docker compose up -d# 查看運行狀態
docker compose ps# 停止服務(保留容器和數據)
docker compose stop# 停止并刪除服務(保留數據卷)
docker compose down# 執行刪除命令(包含數據卷)
docker compose down -v# 強制重新構建并啟動
docker compose up -d --force-recreate
4. 初始化 WordPress
-
打開瀏覽器,訪問服務器 IP 地址(或綁定的域名)
-
選擇網站語言
-
填寫網站基本信息(站點標題、用戶名、密碼、郵箱)
-
點擊 “安裝 WordPress” 完成初始化
5. 后續操作
- 登錄后臺:訪問
http://你的IP/wp-admin
- 安裝主題:在后臺 “外觀 - 主題” 中選擇合適的主題
- 安裝插件:根據需求安裝必要的插件(如 SEO、安全、備份等)
- 配置域名:將域名解析到服務器 IP,并在 WordPress 設置中更新站點地址
二、手動部署WordPress
1. 提前創建數據卷(持久化數據)
為了確保 WordPress 文件和 MySQL 數據在容器刪除后不丟失,先創建兩個數據卷:
# 創建存儲WordPress文件的數據卷
docker volume create wordpress_data# 創建存儲MySQL數據的數據卷
docker volume create db_data
2. 創建自定義網絡(讓容器互通)
WordPress 容器需要連接到 MySQL 容器,最好創建一個自定義網絡(而非默認網絡),這樣容器可以通過 “容器名” 互相訪問(默認網絡可能需要 IP 地址,不方便):
docker network create wordpress_network
3. 啟動 MySQL 數據庫容器
先啟動數據庫容器(因為 WordPress 依賴數據庫),配置環境變量、數據卷和網絡:
docker run -d \--name wordpress_db \ # 給容器起個名字(方便后續引用)--network wordpress_network \ # 加入自定義網絡-e MYSQL_ROOT_PASSWORD=root_secure_password \ # MySQL root密碼(替換為你的強密碼)-e MYSQL_DATABASE=wordpress_db \ # 自動創建的數據庫名-e MYSQL_USER=wordpress \ # 給WordPress用的數據庫用戶-e MYSQL_PASSWORD=your_secure_password \ # 數據庫用戶密碼(替換為你的密碼)-v db_data:/var/lib/mysql \ # 掛載數據卷(持久化MySQL數據)--restart always \ # 自動重啟策略mysql:5.7 # 使用的鏡像(MySQL 5.7)
- 參數說明:
-d
:后臺運行容器--name
:指定容器名稱(后續 WordPress 容器會通過這個名稱連接數據庫)--network
:加入之前創建的網絡,確保和 WordPress 容器在同一網絡-e
:設置環境變量(初始化 MySQL 配置)-v
:掛載數據卷(db_data
卷映射到容器內的/var/lib/mysql
,MySQL 數據存儲目錄)--restart always
:容器退出后自動重啟(保證服務穩定性)
4. 啟動 WordPress 容器
等 MySQL 容器啟動就緒后(約 30 秒,可通過docker logs wordpress_db
查看啟動日志),啟動 WordPress 容器:
docker run -d \--name wordpress_site \ # 容器名稱--network wordpress_network \ # 加入同一網絡(與數據庫互通)-p 80:80 \ # 端口映射(主機80端口 → 容器80端口)-e WORDPRESS_DB_HOST=wordpress_db \ # 數據庫主機(填MySQL容器的名稱,網絡內可直接解析)-e WORDPRESS_DB_USER=wordpress \ # 數據庫用戶名(與MySQL配置一致)-e WORDPRESS_DB_PASSWORD=your_secure_password \ # 數據庫密碼(與MySQL配置一致)-e WORDPRESS_DB_NAME=wordpress_db \ # 數據庫名(與MySQL配置一致)-v wordpress_data:/var/www/html \ # 掛載數據卷(持久化WordPress文件)--restart always \ # 自動重啟策略wordpress:latest # 使用的鏡像(最新版WordPress)
- 參數說明:
--network
:與 MySQL 容器在同一網絡,因此WORDPRESS_DB_HOST
可以直接填 MySQL 容器的名稱(wordpress_db
)-p 80:80
:外部通過主機的 80 端口訪問 WordPress(如http://服務器IP
)-v
:wordpress_data
卷映射到容器內的/var/www/html
(WordPress 的核心文件、主題、插件等存儲目錄)- 環境變量必須與 MySQL 容器的配置完全一致,否則 WordPress 無法連接數據庫
5. 驗證部署
-
查看容器狀態:
docker ps # 查看運行中的容器,應包含wordpress_site和wordpress_db
-
訪問網站:在瀏覽器中輸入服務器的 IP 地址(或綁定的域名),應顯示 WordPress 的初始化頁面。
后續操作(與 Docker Compose 方式一致)
- 初始化 WordPress:按頁面提示設置站點標題、管理員賬號等
- 登錄后臺:
http://服務器IP/wp-admin
- 管理容器:
- 停止容器:
docker stop wordpress_site wordpress_db
- 啟動容器:
docker start wordpress_site wordpress_db
- 刪除容器(數據卷保留):
docker rm wordpress_site wordpress_db
- 停止容器:
- 備份數據:數據卷存儲在
/var/lib/docker/volumes/
目錄,可直接備份該目錄
與 Docker Compose 的區別
- 手動操作需要分步執行命令,且需要手動管理網絡和啟動順序(必須先啟動數據庫)
- 沒有 “一鍵啟動 / 停止所有服務” 的便捷性(Docker Compose 的
up/down
命令) - 配置分散在命令中,不如
docker-compose.yml
文件直觀(后期修改需重新執行docker run
命令)