在本教程中,我们将介绍如何使用Docker Compose安装WordPress,并特别说明ARM和x86架构的区别。
前置条件
- Docker已安装(确保版本 >= 20.10.0)
- Docker Compose已安装(V2版本)
- 基本的命令行操作知识
架构说明
在开始之前,需要确认你的系统架构:
- ARM架构:苹果M系列芯片的Mac、树莓派等
- x86架构:Intel/AMD处理器的计算机
你可以使用以下命令查看系统架构:
uname -m
- x86_64:表示x86架构
- arm64或aarch64:表示ARM架构
创建项目结构
- 创建项目目录:
mkdir wordpress-docker
cd wordpress-docker
- 创建必要的子目录:
mkdir -p mysql-data wp-content
Docker Compose配置文件
创建docker-compose.yml
文件:
version: '3'
services:
# MySQL数据库服务
db:
image: mysql:8.0
# ARM架构使用:mysql/mysql-server:8.0
# x86架构使用:mysql:8.0
volumes:
- ./mysql-data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress_password
command: --default-authentication-plugin=mysql_native_password
platform: ${PLATFORM:-linux/amd64} # ARM架构改为linux/arm64
# WordPress服务
wordpress:
depends_on:
- db
image: wordpress:latest
# ARM架构会自动选择适合的镜像
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress_password
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
platform: ${PLATFORM:-linux/amd64} # ARM架构改为linux/arm64
volumes:
mysql-data:
wp-content:
启动说明
- 对于x86架构,直接运行:
docker compose up -d
- 对于ARM架构,先设置平台变量:
export PLATFORM=linux/arm64
docker compose up -d
访问WordPress
启动完成后,通过浏览器访问:
http://localhost:8080
按照WordPress安装向导完成初始化设置。
重要注意事项
-
ARM架构特别说明:
- MySQL镜像选择要特别注意,推荐使用
mysql/mysql-server:8.0
- 所有服务都需要指定正确的platform
- 首次启动可能较慢,因为需要拉取适合架构的镜像
- MySQL镜像选择要特别注意,推荐使用
-
数据持久化:
- MySQL数据存储在
./mysql-data
目录 - WordPress文件存储在
./wp-content
目录 - 建议定期备份这些目录
- MySQL数据存储在
-
安全建议:
- 修改默认的数据库密码
- 使用强密码
- 考虑添加SSL证书
- 在生产环境中使用防火墙保护服务
常见问题解决
- 如果遇到数据库连接错误:
docker compose logs db
检查数据库日志,确保权限和配置正确。
- 如果WordPress无法写入文件:
docker compose exec wordpress chown -R www-data:www-data /var/www/html/wp-content
- 如果需要更改端口:
修改docker-compose.yml中的ports配置,例如改为"80:80"。
升级维护
- 更新容器:
docker compose pull
docker compose up -d
- 查看日志:
docker compose logs -f
- 停止服务:
docker compose down
记住,在进行任何重要操作前都要备份数据。