Docker 搭建 WordPress 站点教程

wxh Lv3

本文档介绍如何使用 Docker Compose 快速搭建一个基于 Nginx 和 PHP-fpm 的 WordPress 站点。

⚠️ 重要说明

  1. 关于 SSL/HTTPS:本教程不包含 SSL 证书的相关配置。为了安全起见,建议您在宿主机或网关层使用反向代理工具来实现 HTTPS 访问。
    • 推荐工具Lucky —— 一款强大的反向代理与动态域名管理工具。
    1. 关于数据库:本教程不包含数据库服务的搭建。您需要连接到一个现有的 MySQL 或 MariaDB 数据库实例。

1. 准备工作

在开始之前,请确保您的服务器满足以下条件:

  • 已安装 DockerDocker Compose
  • 拥有一个可连接的 MySQL/MariaDB 数据库服务。

目录结构规划

建议按照以下结构创建目录和文件,以便于管理:

1
2
3
4
5
6
wordpress-site/
├── .env # 环境变量配置
├── docker-compose.yml # 容器编排文件
├── php_conf.ini # PHP 配置文件
└── nginx-conf/ # Nginx 配置目录
└── nginx.conf # Nginx 配置文件

2. 配置数据库

请在您的数据库中执行以下 SQL 脚本,以创建 WordPress 所需的数据库和用户权限。

1
2
3
4
5
6
7
8
9
10
11
-- 创建数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户 (请将 'password' 替换为您设定的强密码)
CREATE USER 'wordpress'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

-- 授予权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

3. 创建配置文件

3.1 环境变量文件 (.env)

在项目根目录下创建 .env 文件,填入数据库连接信息。 注意:请根据实际情况修改密码,并确保与步骤 2 中设置的一致。

1
2
MYSQL_USER=wordpress
MYSQL_PASSWORD=password

3.2 Nginx 配置文件 (nginx-conf/nginx.conf)

nginx-conf 目录下创建 nginx.conf注意:请将 server_name website.com; 修改为您自己的域名或 IP。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
listen 80;
server_name website.com; # 请修改此处为您的域名

root /var/www/html;
index index.php;

client_max_body_size 512M;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# 这里的 wordpress 对应 docker-compose 中的服务名称
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto;
}

location ~ /\.ht {
deny all;
}
}

3.3 PHP 配置文件 (php_conf.ini)

在项目根目录下创建 php_conf.ini 文件,用于优化 PHP 性能和处理大文件上传:

1
2
3
4
5
6
7
# 设置上传文件最大限制
upload_max_filesize = 256M
post_max_size = 256M

# 增加内存限制和执行时间,防止大文件上传超时
memory_limit = 512M
max_execution_time = 300

3.4 Docker Compose 文件 (docker-compose.yml)

在项目根目录下创建 docker-compose.yml 文件。

特别提示

  1. WORDPRESS_DB_HOST=mysql:3306 这一行指定了数据库地址。如果您的数据库不在名为 mysql 的容器或主机上,请将其修改为正确的数据库 IP 地址(例如宿主机 IP 192.168.x.x 或其他域名)。
  2. 通过挂载 php_conf.ini 文件到 /usr/local/etc/php/conf.d/custom.ini,可以覆盖 PHP 的默认配置,优化上传限制和执行性能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
services:
wordpress:
image: wordpress:php8.5-fpm-alpine
container_name: wordpress
restart: always
env_file: .env
environment:
# 请确保此处的主机名 'mysql' 能被容器解析,或者修改为真实的数据库 IP
- WORDPRESS_DB_HOST=mysql:3306
- WORDPRESS_DB_USER=$MYSQL_USER
- WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD
- WORDPRESS_DB_NAME=wordpress
volumes:
- ./wordpress:/var/www/html
- ./php_conf.ini:/usr/local/etc/php/conf.d/custom.ini

webserver:
depends_on:
- wordpress
image: nginx:alpine
container_name: webserver
restart: always
ports:
- "80:80"
volumes:
- ./wordpress:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
# 修正 Nginx 用户权限以匹配 PHP-FPM 的 www-data 用户
command: >
/bin/sh -c "
addgroup -g 82 -S www-data;
adduser -u 82 -D -S -G www-data www-data;
sed -i 's/user nginx;/user www-data;/g' /etc/nginx/nginx.conf;
exec nginx -g 'daemon off;'"

4. 启动服务

确认所有文件创建无误后,在项目根目录执行以下命令启动服务:

1
docker-compose up -d

检查运行状态

您可以使用以下命令查看容器是否正常运行:

1
docker-compose ps

如果一切正常,wordpress-hcmwebserver-hcm 两个容器的状态应为 Up

5. 完成安装

  1. 打开浏览器,访问您在 nginx.conf 中配置的域名(或 IP 地址)。
  2. 您将看到 WordPress 的安装向导界面。
  3. 根据提示填写站点标题、管理员账号和密码。
  4. 点击安装,即可完成搭建。

6. 后续建议 (SSL 配置)

正如开头所述,本环境仅提供 HTTP 服务。为了网站安全,请务必配置 SSL。

推荐方案: 在您的网络入口处部署 Lucky,使用它来申请 SSL 证书,并设置反向代理指向本服务的 80 端口。

这样可以将复杂的证书管理和 HTTPS 配置与 WordPress 容器解耦,维护更加方便。

  • 标题: Docker 搭建 WordPress 站点教程
  • 作者: wxh
  • 创建于 : 2025-12-24 00:00:00
  • 更新于 : 2026-01-02 00:27:35
  • 链接: https://blog.private-cloud.site/2025/12/24/WordPress站点搭建教程/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论