当前位置:首页 > 技术 > 正文内容

基于Docker快速搭建WordPress站点的实战方案

访客 技术 2026年7月13日 4

高效部署:十分钟内完成个人博客环境搭建

传统方式部署WordPress需手动配置Web服务器、PHP运行环境及数据库,过程复杂且易出错。借助Docker技术,可实现服务的容器化封装,显著提升部署效率与环境一致性。

采用Docker的优势

  • 环境隔离:应用及其依赖项独立运行于容器中,避免系统污染
  • 跨环境一致:开发、测试与生产环境行为统一,减少"本地能跑,线上报错"问题
  • 快速启动:通过声明式配置文件即可自动拉取镜像并启动多服务
  • 便捷维护:支持一键更新、回滚和迁移,管理成本大幅降低

推荐方案:使用docker-compose.yaml编排服务

该方法适合初学者,通过单一配置文件定义完整应用栈。

1. 环境准备

确认已安装Docker和Docker Compose:

docker --version
docker-compose --version

2. 创建项目目录与配置文件

新建项目文件夹并创建配置文件:

mkdir blog-env && cd blog-env
vim docker-compose.yml

将以下内容写入文件:

version: '3.8'

services:
  database:
    image: mysql:5.7
    volumes:
      - db_storage:/var/lib/mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: secure_root_pass
      MYSQL_DATABASE: site_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: strong_app_pass

  webapp:
    depends_on:
      - database
    image: wordpress:latest
    volumes:
      - wp_content:/var/www/html
    ports:
      - "8080:80"
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: database:3306
      WORDPRESS_DB_USER: app_user
      WORDPRESS_DB_PASSWORD: strong_app_pass
      WORDPRESS_DB_NAME: site_db

volumes:
  db_storage:
  wp_content:

注意:请替换密码字段为高强度自定义值。

3. 启动服务

在项目根目录执行:

docker-compose up -d

成功后输出类似:

[+] Running 2/2
 ⠿ Container blog-env-database-1     Started
 ⠿ Container blog-env-webapp-1      Started

4. 验证状态

docker-compose ps

查看两个容器状态均为"Up"即表示部署成功。

进阶方案:手动容器编排

适用于希望深入理解容器网络与生命周期管理的用户。

1. 拉取基础镜像

docker pull mysql:5.7
docker pull wordpress:latest

2. 创建专用网络

docker network create blog-net

3. 启动数据库容器

docker run -d \
  --name blog-db \
  --network blog-net \
  -e MYSQL_ROOT_PASSWORD=secure_root_pass \
  -e MYSQL_DATABASE=site_db \
  -e MYSQL_USER=app_user \
  -e MYSQL_PASSWORD=strong_app_pass \
  -v db_volume:/var/lib/mysql \
  --restart always \
  mysql:5.7

4. 启动WordPress容器

docker run -d \
  --name blog-site \
  --network blog-net \
  -p 8080:80 \
  -e WORDPRESS_DB_HOST=blog-db:3306 \
  -e WORDPRESS_DB_USER=app_user \
  -e WORDPRESS_DB_PASSWORD=strong_app_pass \
  -e WORDPRESS_DB_NAME=site_db \
  -v wp_volume:/var/www/html \
  --restart always \
  wordpress:latest

初始化WordPress站点

  1. 访问 http://localhost:8080 进入安装页面
  2. 选择语言后点击"继续"
  3. 填写站点标题、管理员账号、密码及邮箱
  4. 点击"安装WordPress"完成初始化
  5. 进入后台地址:http://localhost:8080/wp-admin 登录管理界面

常见问题排查

  • 数据库连接失败:检查环境变量、网络连接与容器日志
  • docker logs blog-db
  • 端口占用:修改映射端口,如将 8080:80 改为 8090:80
  • 数据丢失风险:使用volume持久化存储,确保即使删除容器也不丢失数据
  • docker volume ls

常用运维命令

Docker Compose操作

docker-compose stop          # 停止服务
docker-compose down          # 停止并移除容器(保留卷)
docker-compose down -v       # 停止并移除容器及数据卷
docker-compose logs          # 查看日志
docker-compose restart       # 重启服务

独立容器管理

docker ps                    # 查看运行中的容器
docker stop blog-db blog-site
docker start blog-db blog-site
docker rm blog-db blog-site

总结

通过Docker实现WordPress部署,不仅极大简化了流程,更提升了系统的可移植性与稳定性。无论是使用docker-compose一键部署,还是手动控制容器,均能在短时间内构建出完整可用的博客平台。

后续可自由添加主题、插件,构建个性化内容生态。建议公网发布前启用HTTPS加密,并定期更新核心与插件以保障安全。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。