滴滴/xiaoju-survey项目Docker Compose部署指南
2025-07-09 07:22:27作者:平淮齐Percy
项目概述
xiaoju-survey是滴滴开源的一个问卷调查系统,基于Docker容器化技术提供快速部署方案。本文将详细解析其docker-compose.yaml配置文件,帮助开发者理解和使用这套部署方案。
核心组件解析
该docker-compose文件定义了两个主要服务:
- MongoDB数据库服务:作为问卷调查系统的数据存储后端
- xiaoju-survey应用服务:提供问卷调查系统的主体功能
详细配置解读
1. MongoDB服务配置
mongo:
image: mongo:4
container_name: xiaoju-survey-mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
ports:
- "27017:27017"
volumes:
- mongo-volume:/data/db
networks:
- xiaoju-survey
关键点说明:
- 使用MongoDB 4.x版本镜像,保证兼容性
- 通过环境变量配置管理员账号密码,增强安全性
- 数据持久化使用命名卷(mongo-volume),避免容器重启数据丢失
- 暴露标准27017端口,方便本地开发调试
2. xiaoju-survey应用服务配置
xiaoju-survey:
image: "xiaojusurvey/xiaoju-survey:1.3.1-slim"
container_name: xiaoju-survey
restart: always
ports:
- "8080:80"
environment:
XIAOJU_SURVEY_MONGO_URL: mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@xiaoju-survey-mongo:27017
links:
- mongo:mongo
depends_on:
- mongo
networks:
- xiaoju-survey
关键点说明:
- 使用1.3.1-slim版本镜像,体积更小效率更高
- 容器内80端口映射到宿主机8080端口
- 通过环境变量配置MongoDB连接字符串
- 使用links和depends_on确保数据库服务先启动
网络配置
networks:
xiaoju-survey:
name: xiaoju-survey
driver: bridge
创建了一个名为xiaoju-survey的桥接网络,使两个服务能够相互通信,同时与外部隔离。
数据持久化
volumes:
mongo-volume:
使用Docker卷持久化MongoDB数据,即使容器重启数据也不会丢失。
部署步骤指南
-
准备环境变量文件: 创建.env文件,包含以下内容:
MONGO_INITDB_ROOT_USERNAME=your_username MONGO_INITDB_ROOT_PASSWORD=your_password
-
启动服务:
docker-compose up -d
-
验证服务:
- 访问http://localhost:8080检查应用是否正常运行
- 检查MongoDB容器日志确认数据库服务状态
常见问题解决
-
端口冲突:
- 如果27017或8080端口被占用,可修改ports配置为其他端口
-
环境变量未设置:
- 确保.env文件存在且变量名正确
- 或在命令行直接传递环境变量
-
数据卷权限问题:
- 如遇权限错误,可尝试设置数据卷目录权限为777
最佳实践建议
-
生产环境优化:
- 考虑使用MongoDB副本集提高可用性
- 为应用服务配置资源限制(CPU/内存)
-
版本控制:
- 锁定镜像版本号,避免自动升级导致兼容性问题
-
监控配置:
- 添加健康检查配置
- 考虑集成Prometheus等监控工具
通过这份docker-compose配置,开发者可以快速搭建一个完整的xiaoju-survey问卷调查系统环境,既适合本地开发调试,也便于生产环境部署。