首页
/ ChatNIO项目Docker Compose部署指南

ChatNIO项目Docker Compose部署指南

2025-07-07 01:34:53作者:蔡怀权

项目概述

ChatNIO是一个基于容器化技术构建的聊天应用服务,采用微服务架构设计,通过Docker Compose实现一键部署。本文将详细解析其docker-compose.yaml配置文件,帮助开发者理解项目架构并完成部署。

核心服务组件

1. MySQL数据库服务

mysql:
  image: mysql:latest
  container_name: db
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: chatnio
    MYSQL_USER: chatnio
    MYSQL_PASSWORD: chatnio123456!
    TZ: Asia/Shanghai
  expose:
    - "3306"
  volumes:
      - ./db:/var/lib/mysql
  networks:
    - chatnio-network

技术要点:

  • 使用官方MySQL最新镜像
  • 配置了root用户和项目专用用户(chatnio)
  • 数据持久化通过volume映射到宿主机./db目录
  • 设置时区为Asia/Shanghai(北京时间)
  • 仅暴露3306端口给内部网络

2. Redis缓存服务

redis:
  image: redis:latest
  container_name: redis
  restart: always
  expose:
    - "6379"
  volumes:
    - ./redis:/data
  networks:
    - chatnio-network

技术要点:

  • 使用官方Redis最新镜像
  • 数据持久化到宿主机./redis目录
  • 暴露标准Redis端口6379
  • 无密码认证配置(适合开发环境)

3. ChatNIO应用服务

chatnio:
  image: programzmh/chatnio
  container_name: chatnio
  restart: always
  ports:
      - "8000:8094"
  depends_on:
      - mysql
      - redis
  links:
      - mysql
      - redis
  ulimits:
    nofile:
      soft: 65535
      hard: 65535
  environment:
      MYSQL_HOST: mysql
      MYSQL_USER: chatnio
      MYSQL_PASSWORD: chatnio123456!
      MYSQL_DB: chatnio
      REDIS_HOST: redis
      REDIS_PORT: 6379
      REDIS_PASSWORD: ""
      REDIS_DB: 0
      SERVE_STATIC: "true"
  volumes:
    - ./config:/config
    - ./logs:/logs
    - ./storage:/storage
  networks:
    - chatnio-network

技术要点:

  • 使用自定义镜像programzmh/chatnio
  • 将容器内8094端口映射到宿主机8000端口
  • 依赖mysql和redis服务
  • 设置文件描述符限制为65535
  • 配置数据库和Redis连接参数
  • 启用静态文件服务(SERVE_STATIC)
  • 重要目录持久化:配置、日志、存储

网络配置

networks:
  chatnio-network:
    driver: bridge

项目使用bridge网络模式创建了一个名为chatnio-network的内部网络,所有服务都加入该网络,实现服务间通信隔离。

部署步骤详解

  1. 环境准备

    • 安装Docker和Docker Compose
    • 确保宿主机8000端口可用
  2. 配置文件准备

    • 创建docker-compose.yaml文件
    • 确保有足够的磁盘空间用于数据持久化
  3. 启动服务

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

    • 检查各容器状态:docker ps
    • 查看应用日志:docker logs chatnio
    • 访问应用:http://localhost:8000

生产环境建议

  1. 安全加固

    • 修改默认密码
    • 为Redis添加密码认证
    • 限制数据库外部访问
  2. 性能优化

    • 根据负载调整ulimits参数
    • 考虑使用数据库连接池配置
  3. 监控方案

    • 添加Prometheus监控
    • 配置日志收集系统

常见问题排查

  1. 服务启动失败

    • 检查端口冲突
    • 查看容器日志定位问题
  2. 数据库连接问题

    • 验证数据库服务是否正常启动
    • 检查连接参数是否正确
  3. 存储权限问题

    • 确保宿主机映射目录有适当权限
    • 检查volume挂载是否成功

通过本文的详细解析,开发者可以全面理解ChatNIO项目的容器化部署架构,并根据实际需求进行调整和优化。这种基于Docker Compose的部署方式大大简化了微服务应用的部署复杂度,特别适合中小型项目的快速部署和开发测试环境搭建。