博客搭建Docker版
- 2025年4月14日
- Linux
- 博客搭建Docker版已关闭评论
基础环境
- Linux 或 Windows 系统
- 已安装 Docker 和 Docker Compose
Docker Compose 配置文件
以下是 docker-compose.yml
配置文件,将所有挂载的数据卷映射到与 Compose 文件同级的 data
目录下,方便集中管理和迁移数据。
docker-compose.yml
# 指定 Docker Compose 文件格式版本
version: '3'
# 定义服务列表
services:
# WordPress 服务配置
wordpress:
# 使用最新版 WordPress 镜像
image: wordpress:latest
# 容器名称
container_name: wordpress
# 设置容器自动重启策略
restart: always
# 端口映射,将主机的 80 端口映射到容器的 80 端口
ports:
- "80:80"
# 环境变量设置,用于 WordPress 连接数据库
environment:
# 数据库主机名
WORDPRESS_DB_HOST: mysql
# 数据库名称
WORDPRESS_DB_NAME: wordpress
# 数据库用户名
WORDPRESS_DB_USER: admin
# 数据库密码
WORDPRESS_DB_PASSWORD: admin_password
# 数据卷挂载,将 WordPress 数据保存到本地
volumes:
- ./data/wordpress:/var/www/html
# 依赖关系,确保 MySQL 先启动
depends_on:
- mysql
# 连接到指定网络
networks:
- wordpress-net
# MySQL 数据库服务配置
mysql:
# 使用 MySQL 5.7 版本镜像(与 WordPress 兼容性最好)
image: mysql:5.7
# 容器名称
container_name: mysql
# 设置容器自动重启策略
restart: always
# 端口映射,将主机的 3306 端口映射到容器的 3306 端口
ports:
- "3306:3306"
# 环境变量设置,用于初始化 MySQL
environment:
# 要创建的数据库名称
MYSQL_DATABASE: wordpress
# 创建的普通用户名
MYSQL_USER: admin
# 普通用户密码
MYSQL_PASSWORD: admin_password
# root 用户密码
MYSQL_ROOT_PASSWORD: root_password
# 数据卷挂载,将 MySQL 数据保存到本地
volumes:
- ./data/mysql:/var/lib/mysql
# 连接到指定网络
networks:
- wordpress-net
# phpMyAdmin 服务配置,用于管理 MySQL 数据库
phpmyadmin:
# 使用 phpMyAdmin 官方镜像
image: phpmyadmin/phpmyadmin
# 容器名称
container_name: phpmyadmin
# 设置容器自动重启策略
restart: always
# 端口映射,将主机的 8080 端口映射到容器的 80 端口
ports:
- "8080:80"
# 环境变量设置
environment:
# 指定要连接的 MySQL 主机
PMA_HOST: mysql
# MySQL root 用户密码
MYSQL_ROOT_PASSWORD: root_password
# 依赖关系,确保 MySQL 先启动
depends_on:
- mysql
# 连接到指定网络
networks:
- wordpress-net
# Redis 缓存服务配置,用于提升 WordPress 性能
redis:
# 使用 Redis Alpine 版本镜像(体积小、性能好)
image: redis:alpine
# 容器名称
container_name: redis
# 设置容器自动重启策略
restart: always
# 连接到指定网络
networks:
- wordpress-net
# 定义网络配置
networks:
# 自定义网络名称
wordpress-net:
# 网络驱动类型为桥接模式
driver: bridge
配置说明
数据目录本地化
- WordPress 数据目录:
./data/wordpress
- MySQL 数据目录:
./data/mysql
这些目录会自动在与 docker-compose.yml 同级的 data 文件夹下生成。
主要优化点
- 使用 MySQL 5.7 版本,与 WordPress 兼容性最好
- 添加了
restart: always
确保容器自动重启 - 添加了
depends_on
确保数据库先启动 - 增强了密码安全性
- 网络隔离,提高安全性
目录结构
运行后,项目目录结构将如下:
your-project/
├── docker-compose.yml
└── data/
├── wordpress/ # WordPress 核心文件、插件、主题等
└── mysql/ # MySQL 数据库文件
部署步骤
1. 创建本地数据目录(可选)
Docker 会自动创建目录,但建议先手动创建并设置权限(避免权限问题):
mkdir -p data\wordpress data\mysql
Linux/macOS 用户可能需要赋予写入权限:
chmod -R 755 ./data
2. 启动服务
docker-compose up -d
3. 验证部署
- 访问 http://localhost 查看 WordPress 站点
- WordPress 数据目录:
./data/wordpress
会填充 WordPress 的核心文件 - MySQL 数据目录:
./data/mysql
会存储 MySQL 的数据库文件
数据备份与迁移
简易备份
直接复制整个 data 文件夹即可完成数据迁移或备份。
数据库备份
对于更安全的备份,可以使用 MySQL 导出命令:
docker exec mysql mysqldump -u root -proot_password wordpress > backup.sql
数据库恢复
docker exec -i mysql mysql -u root -proot_password wordpress < backup.sql
常见问题与解决方案
权限问题
如果遇到权限错误,可能需要调整目录权限:
Windows 用户需确保 Docker Desktop 已启用”文件共享”(Settings → Resources → File Sharing)。
Linux/macOS 用户可执行:
sudo chown -R 999:999 ./data/mysql
端口冲突
如果宿主机已有服务占用 80 或 3306 端口,需修改 ports 配置,例如:
ports:
- "8080:80" # 将主机的8080端口映射到容器的80端口
安全建议
- 密码安全:生产环境中应使用更强的随机密码
- 健康检查:考虑添加 WordPress 和 MySQL 的健康检查
- HTTPS 支持:可以添加 Nginx 作为反向代理,提供 HTTPS 支持
- 定期备份:设置定时任务,定期备份数据库和文件
- 更新维护:定期更新 WordPress 和插件,保持系统安全