1. 创建并进入目标目录
首先,在 /opt 下创建一个专属目录。由于 /opt 权限通常较高,需要使用 sudo:
sudo mkdir -p /opt/wordpress-app
sudo chown $USER:$USER /opt/wordpress-app # 将所有权改为当前用户,方便操作
cd /opt/wordpress-app
2. 编写 docker-compose.yml
在该目录下创建配置文件。我们将使用 相对路径,这样 Docker 会自动在 /opt/wordpress-app 下创建数据文件夹。
cd /opt/wordpress-app # 进入项目目录里
nano docker-compose.yml
粘贴以下内容
services:
db:
image: mariadb:10.11
restart: always
environment:
# 1. 数据库超级管理员 (root) 的密码
# 建议设置一个非常复杂的密码,仅用于后台维护,WordPress 运行不直接使用它。
MYSQL_ROOT_PASSWORD: your_root_password
# 2. 自动创建的数据库名称
# WordPress 的数据都会存放在这个名为 "wordpress" 的库里。
MYSQL_DATABASE: wordpress
# 3. WordPress 专用数据库用户名
# 为了安全,不建议让网页程序直接使用 root 账号,这里创建一个普通用户。
MYSQL_USER: wordpress_user
# 4. WordPress 专用数据库用户的密码
MYSQL_PASSWORD: your_password
volumes:
# 数据将存储在 /opt/wordpress-app/db_data
- ./db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
ports:
- "80:80" # 如果没被占用,直接用 80 端口
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: your_password
WORDPRESS_DB_NAME: wordpress
volumes:
# 代码和图片将存储在 /opt/wordpress-app/wp_data
- ./wp_data:/var/www/html
depends_on:
- db
3. 启动容器
如果出现此类报错
root@VM-4-5-debian:/opt/wordpress-app# docker-compose up -d
-bash: docker-compose: command not found
更换较新的指令
docker compose up -d
如果出现这个错误原因很简单,服务器无法连接到 Docker Hub 官方镜像库。
具体来说,i/o timeout(连接超时)通常是由以下两个原因导致的:
IPv6 优先问题:报错信息中出现了 [2a03:2880...],这说明你的系统正尝试通过 IPv6 连接 Docker 官网,但腾讯云的公网环境可能对 IPv6 支持不畅。
网络环境限制:在国内直接拉取 docker.io 的镜像经常会遇到网络波动或被屏蔽的情况。
root@VM-4-5-debian:/opt/wordpress-app# docker compose up -d
[+] up 2/2
✘ Image mariadb:10.11 Error failed to resolve reference "docker.io/library/mariadb:10.11": failed to do request: Head "https://registry-1.docke... 30.0s
! Image wordpress:latest Interrupted 30.0s
Error response from daemon: failed to resolve reference "docker.io/library/mariadb:10.11": failed to do request: Head "https://registry-1.docker.io/v2/library/mariadb/manifests/10.11": dial tcp [2a03:2880:f10e:83:face:b00c:0:25de]:443: i/o timeout
root@VM-4-5-debian:/opt/wordpress-app#
🛠️ 解决方案
彻底禁用 IPv6(针对腾讯云最有效的方案)
从报错日志看,Docker 一直在尝试通过 IPv6 (2a03:2880...) 连接。国内很多环境的 IPv6 虽然能分配地址,但路由是不通的。
最简单的办法:让 Debian 彻底优先使用 IPv4。
- 打开文件:
sudo nano /etc/gai.conf
找到第 54 行左右的这行代码: #precedence ::ffff:0:0/96 100
去掉前面的 # 号,保存退出(Ctrl+O, Enter, Ctrl+X)。
无需重启,直接再次执行:
docker compose up -d
依旧失败,不着急国内的环境就是复杂一些。
最后更换公共代理加速器
换成目前国内维护比较勤快的第三方代理加速器。
1. 修改 daemon.json
将你之前的 registry-mirrors 内容替换为以下几个(这是目前 2026 年比较稳定的几个):
sudo nano /etc/docker/daemon.json
修改为:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.net"
],
"log-driver": "json-file",
"log-opts": { "max-size": "100m", "max-file": "3" },
"live-restore": true
}
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
启动(在wordpress-app目录里执行)
docker compose up -d


1.确认容器运行状态
docker compose ps
2.开放防火墙(腾讯云关键步骤)
你的 Docker 映射了端口(比如 8080:80 或 80:80),但腾讯云默认的安全组可能拦截了外部访问:
- 登录 腾讯云控制台 -> 云服务器 -> 实例。
- 点击 安全组 -> 修改规则。
- 添加一条:协议端口 TCP:80 (或者你设置的 8080),来源选择 0.0.0.0/0(全开)。
3. 完成 Web 安装
在浏览器输入:http://你的服务器公网IP。
- 看到 WordPress 著名的“五分钟安装”界面,就说明成功了!
- 数据库连接信息如果你按之前的配置填,主机名(Host)记得填
db(这是 Compose 内部的服务名),而不是localhost。

填写基本信息

完结撒花


通过域名访问wordpress
1. 准备 Nginx 配置文件
在 /opt/wordpress-app 目录下创建一个 nginx 文件夹,用来存放配置:
mkdir -p /opt/wordpress-app/nginx/conf.d
创建一个名为 default.conf 的配置文件:
nano /opt/wordpress-app/nginx/conf.d/default.conf
写入以下内容(记得替换域名):
server {
listen 80;
server_name yourdomain.com; # 替换成你的域名
location / {
proxy_pass http://wordpress:80; # 这里的 wordpress 对应 compose 里的服务名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
2. 更新 docker-compose.yml
修改你现有的配置文件,把 Nginx 加进去,并注意端口冲突(WordPress 容器不需要再向外暴露 80 端口了,交给 Nginx 暴露)。
services:
db:
image: mariadb:10.11
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: your_password
volumes:
- ./db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
# 删掉之前的 ports: - "80:80",因为我们不需要外部直接访问 WP
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: your_password
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp_data:/var/www/html
depends_on:
- db
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- wordpress
3. 部署并验证
- 域名解析:在你的域名服务商处,将域名指向腾讯云服务器的公网 IP。
- 重启服务:
cd /opt/wordpress-app
docker compose up -d


访问域名看看效果

最后需要到wordpress后台设置里
访问:http://你的域名/wp-admin/


填写完,保存更改就可以通过域名访问我们的网站了。
发表回复