首页
/ Checkmate项目生产环境Docker Compose部署指南

Checkmate项目生产环境Docker Compose部署指南

2025-07-07 07:18:49作者:伍霜盼Ellen

项目概述

Checkmate是一个基于Docker容器技术的应用系统,采用前后端分离架构,包含前端服务、后端API服务和MongoDB数据库服务。本指南将详细解析其生产环境下的Docker Compose配置文件,帮助开发者理解如何部署这一复杂系统。

核心服务架构

Checkmate系统由四个主要服务组件构成:

  1. 前端服务(Client):基于Nginx的Web应用
  2. 后端服务(Server):提供API接口的业务逻辑处理
  3. 数据库服务(MongoDB):数据存储与持久化
  4. 证书服务(Certbot):自动化SSL证书管理

详细配置解析

1. 前端服务配置

前端服务使用Nginx作为Web服务器,主要配置要点包括:

client:
  image: ghcr.io/bluewave-labs/checkmate:frontend-demo
  restart: always
  environment:
    UPTIME_APP_API_BASE_URL: "https://checkmate-demo.bluewavelabs.ca/api/v1"
    UPTIME_APP_CLIENT_HOST: "https://checkmate-demo.bluewavelabs.ca"
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d/:ro
    - ./certbot/www:/var/www/certbot/:ro
    - ./certbot/conf/:/etc/nginx/ssl/:ro

关键特性

  • 采用80和443标准端口映射,支持HTTP和HTTPS
  • 通过环境变量配置API基础URL和客户端主机地址
  • 使用只读(ro)卷挂载Nginx配置、证书和Web根目录
  • 自动重启策略确保服务高可用

2. 后端服务配置

后端服务是系统的核心业务处理层:

server:
  image: ghcr.io/bluewave-labs/checkmate:backend-demo
  restart: always
  ports:
    - "52345:52345"
  env_file:
    - server.env
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro

技术要点

  • 使用非标准端口52345暴露服务
  • 通过env_file引入外部环境变量配置
  • 挂载Docker socket实现容器管理功能
  • 依赖MongoDB服务完成数据存取

3. MongoDB数据库配置

数据库服务采用MongoDB副本集架构:

mongodb:
  image: ghcr.io/bluewave-labs/checkmate:mongo-demo
  command: ["mongod", "--quiet", "--replSet", "rs0", "--bind_ip_all"]
  volumes:
    - ./mongo/data:/data/db
  healthcheck:
    test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet
    interval: 5s
    timeout: 30s
    retries: 30

高级特性

  • 配置为单节点副本集(rs0),为未来扩展预留架构空间
  • 数据目录持久化到宿主机确保数据安全
  • 智能健康检查自动初始化副本集
  • 绑定所有网络接口(--bind_ip_all)确保容器间通信

4. Certbot证书服务

自动化SSL证书管理方案:

certbot:
  image: certbot/certbot:latest
  volumes:
    - ./certbot/www/:/var/www/certbot/:rw
    - ./certbot/conf/:/etc/letsencrypt/:rw
  entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;'"

证书管理策略

  • 每12小时自动检查并续期证书
  • 使用webroot验证方式获取证书
  • 证书和验证文件通过卷共享给前端服务
  • 优雅的进程终止处理(trap exit TERM)

服务依赖关系

系统采用显式依赖声明确保启动顺序:

  1. MongoDB作为基础数据服务最先启动
  2. 后端服务依赖MongoDB就绪后启动
  3. 前端服务最后启动,依赖后端API可用

部署建议

  1. 目录结构准备

    ├── certbot/
    │   ├── conf/
    │   └── www/
    ├── mongo/
    │   └── data/
    └── nginx/
        └── conf.d/
    
  2. 环境变量配置

    • 准备server.env和mongo.env配置文件
    • 包含数据库认证、API密钥等敏感信息
  3. 证书初始化

    • 首次部署需手动运行certbot获取初始证书
    • 后续通过容器自动维护证书有效性
  4. 网络考虑

    • 确保主机80/443端口可用
    • 考虑添加网络隔离提高安全性

性能优化方向

  1. 对于高负载场景,可考虑:

    • MongoDB添加更多副本集成员
    • 后端服务实现水平扩展
    • 前端服务添加负载均衡
  2. 监控建议:

    • 添加Prometheus监控各服务健康状态
    • 设置日志收集系统分析运行情况

本部署方案展示了Checkmate项目在生产环境下的标准容器化部署方式,兼顾了易用性、安全性和可扩展性,为开发者提供了可靠的参考实现。