首页
/ 滴滴/xiaoju-survey项目Docker Compose部署指南

滴滴/xiaoju-survey项目Docker Compose部署指南

2025-07-09 07:22:27作者:平淮齐Percy

项目概述

xiaoju-survey是滴滴开源的一个问卷调查系统,基于Docker容器化技术提供快速部署方案。本文将详细解析其docker-compose.yaml配置文件,帮助开发者理解和使用这套部署方案。

核心组件解析

该docker-compose文件定义了两个主要服务:

  1. MongoDB数据库服务:作为问卷调查系统的数据存储后端
  2. 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数据,即使容器重启数据也不会丢失。

部署步骤指南

  1. 准备环境变量文件: 创建.env文件,包含以下内容:

    MONGO_INITDB_ROOT_USERNAME=your_username
    MONGO_INITDB_ROOT_PASSWORD=your_password
    
  2. 启动服务

    docker-compose up -d
    
  3. 验证服务

    • 访问http://localhost:8080检查应用是否正常运行
    • 检查MongoDB容器日志确认数据库服务状态

常见问题解决

  1. 端口冲突

    • 如果27017或8080端口被占用,可修改ports配置为其他端口
  2. 环境变量未设置

    • 确保.env文件存在且变量名正确
    • 或在命令行直接传递环境变量
  3. 数据卷权限问题

    • 如遇权限错误,可尝试设置数据卷目录权限为777

最佳实践建议

  1. 生产环境优化

    • 考虑使用MongoDB副本集提高可用性
    • 为应用服务配置资源限制(CPU/内存)
  2. 版本控制

    • 锁定镜像版本号,避免自动升级导致兼容性问题
  3. 监控配置

    • 添加健康检查配置
    • 考虑集成Prometheus等监控工具

通过这份docker-compose配置,开发者可以快速搭建一个完整的xiaoju-survey问卷调查系统环境,既适合本地开发调试,也便于生产环境部署。