使用HTTPS-PORTAL安全部署WordPress的Docker Compose配置指南
2025-07-08 06:36:30作者:蔡丛锟
前言
在现代Web应用部署中,安全性是首要考虑因素之一。HTTPS-PORTAL是一个基于Docker的解决方案,能够轻松地为您的应用添加HTTPS支持。本文将详细解析如何使用HTTPS-PORTAL配合Docker Compose来安全地部署WordPress网站。
核心组件概述
这个Docker Compose配置主要包含三个关键服务:
- HTTPS-PORTAL:作为反向代理和SSL终端,负责处理HTTPS连接
- WordPress:流行的内容管理系统
- MariaDB:MySQL兼容的关系型数据库,用于存储WordPress数据
详细配置解析
HTTPS-PORTAL服务配置
https-portal:
image: steveltn/https-portal:1
ports:
- 80:80
- 443:443
links:
- wordpress
restart: always
environment:
DOMAINS: 'https-portal-test.steveltn.me -> http://wordpress'
STAGE: production
volumes:
- https-portal-data:/var/lib/https-portal
关键配置说明:
ports
:映射主机80和443端口,分别处理HTTP和HTTPS请求restart: always
:确保服务在失败或主机重启后自动恢复DOMAINS
:定义域名映射规则,将指定域名转发到WordPress容器STAGE
:设置Let's Encrypt证书环境(生产或测试)volumes
:持久化存储SSL证书等数据
WordPress服务配置
wordpress:
image: wordpress
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: '<a secure password>'
WORDPRESS_DB_USER: wordpress
links:
- db:mysql
关键配置说明:
- 使用官方WordPress镜像
- 通过环境变量配置数据库连接信息
- 链接到数据库服务
MariaDB数据库配置
db:
image: mariadb
environment:
MYSQL_DATABASE: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_ROOT_PASSWORD: '<a secure password>'
MYSQL_USER: wordpress
volumes:
- db-data:/var/lib/mysql
关键配置说明:
- 使用MariaDB镜像(MySQL兼容)
- 配置数据库用户、密码和默认数据库
- 使用卷持久化存储数据库数据
部署注意事项
-
协议问题:最新版WordPress可能不识别HTTPS-PORTAL发送的
X_FORWARDED_PROTO
头,需要额外配置解决协议错误 -
安全密码:配置文件中使用
<a secure password>
占位符,实际部署时应替换为强密码 -
证书获取:
- 默认使用Let's Encrypt的测试服务器(有速率限制)
- 生产环境应取消
STAGE: production
的注释
-
域名配置:将示例域名
https-portal-test.steveltn.me
替换为您自己的域名
部署步骤
- 创建
docker-compose.yml
文件,填入上述配置 - 修改配置中的密码和域名信息
- 运行
docker-compose up -d
启动服务 - 根据WordPress的安装向导完成初始化设置
持久化存储
配置中定义了两个卷:
https-portal-data
:存储SSL证书和HTTPS-PORTAL相关数据db-data
:存储MariaDB数据库文件
这确保了即使容器重启,证书和数据库内容也不会丢失。
总结
通过这个Docker Compose配置,您可以快速部署一个安全的WordPress网站,具有以下优势:
- 自动获取和管理Let's Encrypt SSL证书
- 数据库和证书数据持久化存储
- 服务自动恢复机制
- 清晰的容器间通信配置
这种部署方式特别适合需要快速搭建安全WordPress网站的场景,同时保持了Docker部署的灵活性和可移植性。