PushDeer自托管Docker Compose部署指南
2025-07-08 04:58:47作者:齐添朝
概述
PushDeer是一个开源的推送服务解决方案,本文主要介绍如何使用Docker Compose文件进行PushDeer的自托管部署。通过容器化部署方式,可以快速搭建一套完整的PushDeer推送服务环境。
核心服务组件
PushDeer的自托管部署主要包含以下三个核心服务:
- MariaDB数据库服务:作为PushDeer的数据存储后端
- Redis服务:提供缓存和消息队列功能
- 应用服务:PushDeer的核心业务逻辑实现
详细配置解析
1. MariaDB数据库配置
mariadb:
image: 'mariadb:10.5.8-focal'
healthcheck:
test: ["CMD", "mysqladmin", "ping", "--silent","--password=$$MYSQL_ROOT_PASSWORD"]
timeout: 10s
retries: 3
volumes:
- 'mariadb_data:/var/lib/mysql'
environment:
- MYSQL_ROOT_PASSWORD=theVeryp@ssw0rd
- MYSQL_DATABASE=pushdeer
关键配置说明:
- 使用MariaDB 10.5.8版本,基于Ubuntu Focal基础镜像
- 配置了健康检查机制,确保数据库服务可用
- 使用卷挂载持久化存储数据库文件
- 预设了root密码和pushdeer数据库
安全建议:生产环境中应修改默认密码theVeryp@ssw0rd
2. Redis服务配置
redis:
image: 'bitnami/redis:6.0.16'
healthcheck:
test: ["CMD", "redis-cli","ping"]
environment:
- ALLOW_EMPTY_PASSWORD=yes
关键配置说明:
- 使用Redis 6.0.16版本
- 配置了基本的健康检查
- 允许空密码访问(生产环境应配置密码)
3. PushDeer应用服务配置
app:
build: './docker/web/'
ports:
- '8800:80'
volumes:
- './:/app'
depends_on:
mariadb:
condition: service_healthy
redis:
condition: service_healthy
environment:
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USERNAME=root
- DB_DATABASE=pushdeer
- DB_PASSWORD=theVeryp@ssw0rd
- GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
- GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
- APP_DEBUG=false
- MQTT_API_KEY=9LKo3
- MQTT_ON=false
关键配置说明:
- 使用自定义构建的PHP应用镜像
- 将容器80端口映射到宿主机8800端口
- 挂载当前目录到容器/app目录
- 依赖数据库和Redis服务,并确保它们健康后才启动
- 丰富的环境变量配置:
- 数据库连接参数
- iOS推送相关主题配置
- 调试模式开关
- MQTT配置(默认关闭)
可选MQTT服务配置
配置文件中包含了注释掉的MQTT服务配置,如需启用推送的MQTT功能,可以取消注释并配置相关参数:
# mqtt:
# image: 'ccr.ccs.tencentyun.com/ftqq/pushdeeresp'
# ports:
# - '1883:1883'
# environment:
# - API_KEY=9LKo3
# - MQTT_PORT=1883
# - MQTT_USER=easy
# - MQTT_PASSWORD=y0urp@ss
# - MQTT_BASE_TOPIC=default
部署步骤
- 确保已安装Docker和Docker Compose
- 创建项目目录并保存上述docker-compose.yml文件
- 在项目目录下执行:
docker-compose up -d
- 等待所有服务启动完成
- 访问
http://localhost:8800
验证服务是否正常运行
生产环境建议
- 修改所有默认密码和安全凭证
- 配置TLS/SSL加密通信
- 设置适当的资源限制(CPU/内存)
- 配置日志轮转和监控
- 考虑使用外部数据库服务而非容器内数据库
- 定期备份数据卷
常见问题
Q: 如何修改服务端口?
A: 修改app服务下的ports配置,格式为'宿主机端口:容器端口'
Q: 如何查看服务日志?
A: 使用docker-compose logs -f
命令查看实时日志
Q: 如何更新服务?
A: 修改配置后执行docker-compose up -d --build
通过以上配置和说明,您可以轻松部署一套自托管的PushDeer推送服务,根据实际需求调整配置参数即可。