PushDeer项目Docker Compose部署指南
2025-07-08 04:59:50作者:农烁颖Land
概述
PushDeer是一个消息推送服务项目,本文主要介绍如何使用Docker Compose快速部署PushDeer服务。通过Docker容器化技术,我们可以轻松搭建包含数据库、缓存和应用服务的完整推送系统环境。
部署架构分析
从提供的docker-compose.yml文件可以看出,PushDeer采用典型的三层架构:
- 数据库层:使用MariaDB 10.5.8作为关系型数据库
- 缓存层:使用Redis 6.0.16作为缓存服务
- 应用层:基于PHP 8.0的Web应用服务
详细配置解析
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
ports:
- '3306:3306'
关键点说明:
- 使用MariaDB 10.5.8官方镜像,基于Ubuntu Focal基础镜像
- 配置了健康检查,确保数据库服务可用后才启动依赖服务
- 使用数据卷持久化存储数据库文件
- 默认创建了名为"pushdeer"的数据库
- 暴露3306端口供外部访问(生产环境应考虑安全限制)
2. Redis服务配置
redis:
image: 'bitnami/redis:6.0.16'
healthcheck:
test: ["CMD", "redis-cli","ping"]
environment:
- ALLOW_EMPTY_PASSWORD=yes
关键点说明:
- 使用Bitnami提供的Redis 6.0.16镜像
- 配置了简单的ping健康检查
- 允许空密码访问(生产环境应设置密码)
3. 应用服务配置
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
关键点说明:
- 使用自定义构建的Docker镜像(基于webdevops/php-apache:8.0-alpine)
- 将容器80端口映射到宿主机8800端口
- 使用bind mount将当前目录挂载到容器/app目录
- 依赖数据库和Redis服务,且等待它们健康后才启动
- 通过环境变量配置数据库连接信息
部署步骤指南
-
准备环境:
- 确保已安装Docker和Docker Compose
- 克隆PushDeer项目代码到本地
-
修改配置(可选):
- 建议修改默认数据库密码
- 如需外部访问Redis,应设置密码
-
启动服务:
docker-compose up -d
-
验证服务:
- 访问http://localhost:8800 查看应用是否正常运行
- 检查各容器日志确认无报错
-
停止服务:
docker-compose down
安全建议
-
数据库安全:
- 修改默认root密码
- 生产环境应限制3306端口外部访问
- 考虑创建专用应用用户而非使用root
-
Redis安全:
- 设置访问密码
- 考虑启用TLS加密
-
应用安全:
- 定期更新基础镜像获取安全补丁
- 考虑添加Web应用防火墙
性能优化建议
-
资源限制:
- 为各服务配置适当的CPU和内存限制
-
数据库优化:
- 根据负载调整MariaDB配置参数
- 考虑添加查询缓存
-
Redis优化:
- 根据使用模式调整内存淘汰策略
- 监控内存使用情况
常见问题排查
-
服务启动失败:
- 检查docker-compose logs输出
- 确认端口未被占用
-
数据库连接问题:
- 验证数据库服务是否健康
- 检查连接字符串配置
-
应用报错:
- 检查挂载的代码目录权限
- 确认依赖服务已正常启动
通过以上Docker Compose配置,PushDeer项目可以快速搭建起完整的开发或测试环境。生产环境部署时,建议根据实际需求进一步调整安全性和性能相关配置。