用 Docker 一键部署 WordPress 的核心是 docker-compose.yml 文件,需正确定义 MySQL 与 WordPress 服务、配置 WORDPRESS_DB_HOST 为 db:3306、挂载 ./wp-content 和 ./mysql-data 卷、设置 depends_on 和环境变量,启动后通过 docker-compose logs 和访问 localhost:8080 验证成功。

用 Docker 一键部署 WordPress 博客,核心是靠 docker-compose.yml 文件统一定义和启动整套环境,不需要手动拉镜像、建网络、配连接,真正实现“一条命令跑起来”。关键不在多,而在准:MySQL 和 WordPress 容器要互通、数据要落盘、配置要对得上。
写对 docker-compose.yml 是成败前提
这个文件必须同时声明数据库与博客服务,并确保它们能互相识别。常见错误是 WORDPRESS_DB_HOST 写成 127.0.0.1 或 localhost——这在容器里根本连不到另一个容器。
- db 服务用 mysql:8.0 或 mysql:5.7 都可,推荐 8.0;设好 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER 和 MYSQL_PASSWORD,四者缺一不可
- wordpress 服务的 WORDPRESS_DB_HOST 必须写成 db:3306(服务名+端口),不是 IP;WORDPRESS_DB_NAME、USER、PASSWORD 要和上面 db 里设的一致
- 务必挂载 volumes:./wp-content:/var/www/html/wp-content 保主题插件,./mysql-data:/var/lib/mysql 保数据库,否则重启就清空
- 加 depends_on: [db] 确保 MySQL 先启动;加 restart: unless-stopped 让服务稳住
启动后快速验证是否真通
执行 docker-compose up -d 后别急着开浏览器,先看日志确认底层连得上。
- 运行 docker-compose logs -f wordpress,等出现 “WordPress database is ready” 或 “Success: WordPress was successfully installed” 才算数据库连接成功
- 如果报 “Access denied for user” 或 “Connection refused”,90% 是 WORDPRESS_DB_HOST 写错,或 db 容器根本没起来(可用 docker-compose ps 查状态)
- 浏览器访问 http://localhost:8080(或你映射的端口),能进安装向导页面,说明 Web 层已通
让博客真正可用的几处实操要点
默认部署只是能装,离日常使用还差几步关键配置。
- 首次访问时填写的“数据库主机”填 db(不是 localhost),其他账号密码严格对应 docker-compose.yml 里的设置
- 上传图片、安装插件失败?检查 ./wp-content 目录权限,宿主机上运行 chmod -R 755 ./wp-content 可解
- 想用域名访问?别直接暴露 8080 端口,加一层 Nginx 反向代理,把 yourblog.com 指向 localhost:8080,并配好 HTTPS(Let’s Encrypt)
- 升级 WordPress 或插件前,先备份 ./wp-content 和 ./mysql-data 两个目录,这是你全部数据所在
常用运维命令记牢就够用
部署完不是一劳永逸,日常维护靠这几个命令就能应对大部分情况。
- docker-compose ps:看当前哪些容器在跑、状态是否 healthy
- docker-compose logs -t wordpress:带时间戳查 WordPress 日志,定位问题快
- docker-compose down:停服务但保留数据卷,安全
- docker-compose down -v:彻底清空(含数据库),重装前用
- docker-compose up -d --force-recreate:强制重建并启动,适合改完配置后刷新











