使用Docker+WordPress部署个人博客
一、通过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
命令)