使用Docker快速部署WordPress并配置SSL证书

来自:素雅营销研究院

头像 方知笔记
2025年06月23日 02:18

前言

在当今互联网时代,拥有一个安全可靠的网站至关重要。WordPress作为最受欢迎的内容管理系统之一,结合Docker容器化技术和SSL加密协议,可以快速搭建一个高性能且安全的网站。本文将详细介绍如何使用Docker部署WordPress并配置SSL证书。

准备工作

在开始之前,请确保您的系统已安装以下组件:

  • Docker引擎
  • Docker Compose
  • 域名(用于SSL证书申请)

使用Docker Compose部署WordPress

  1. 首先创建一个docker-compose.yml文件:
version: '3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html

volumes:
db_data:
wordpress_data:
  1. 运行以下命令启动服务:
docker-compose up -d

配置SSL证书

使用Let’s Encrypt获取免费SSL证书

  1. 首先停止现有的WordPress容器:
docker-compose stop wordpress
  1. 修改docker-compose.yml文件,添加Nginx反向代理和Certbot服务:
version: '3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
networks:
- web

nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx-conf:/etc/nginx/conf.d
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt
depends_on:
- wordpress
restart: always
networks:
- web

certbot:
image: certbot/certbot
volumes:
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt
depends_on:
- nginx
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
networks:
- web

volumes:
db_data:
wordpress_data:

networks:
web:
driver: bridge
  1. 创建Nginx配置文件nginx-conf/wordpress.conf
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;

location / {
return 301 https://$host$request_uri;
}

location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}

server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;

ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

location / {
proxy_pass http://wordpress:80;
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;
}
}
  1. 初始化证书申请:
docker-compose run --rm certbot certonly --webroot --webroot-path /var/www/certbot --dry-run -d yourdomain.com -d www.yourdomain.com
  1. 如果测试成功,移除--dry-run参数重新运行获取真实证书。

  2. 最后启动所有服务:

docker-compose up -d

配置WordPress使用HTTPS

  1. 登录WordPress后台
  2. 进入”设置”->“常规”
  3. 将”WordPress地址(URL)“和”站点地址(URL)“中的http改为https
  4. 保存更改

自动续期SSL证书

由于Let’s Encrypt证书有效期为90天,我们已配置Certbot容器自动续期。您可以通过以下命令检查续期日志:

docker-compose logs certbot

总结

通过Docker和Docker Compose,我们快速部署了一个WordPress网站,并使用Nginx反向代理和Let’s Encrypt SSL证书实现了全站HTTPS加密。这种方案不仅部署简单,而且便于维护和扩展,是搭建安全WordPress网站的理想选择。

注意事项

  1. 定期备份您的网站数据和数据库
  2. 监控证书续期情况
  3. 保持Docker镜像更新以获得安全补丁
  4. 考虑使用防火墙限制不必要的端口访问

希望本教程能帮助您快速搭建一个安全可靠的WordPress网站!