首页
/ 深入解析eth0izzle/shhgit项目的Docker Compose部署架构

深入解析eth0izzle/shhgit项目的Docker Compose部署架构

2025-07-09 03:32:59作者:柏廷章Berta

项目概述

eth0izzle/shhgit是一个专注于代码仓库敏感信息检测的开源工具,它能够扫描代码库中可能泄露的敏感信息,如API密钥、密码、认证令牌等。该项目采用Docker Compose进行容器化部署,提供了便捷的一键式部署方案。

Docker Compose文件解析

整体架构设计

该项目的Docker Compose配置采用了典型的微服务架构设计,将系统分为两个主要服务组件:

  1. Web前端服务 (shhgit-www):基于Nginx的静态网页服务
  2. 核心应用服务 (shhgit-app):执行实际扫描工作的主程序

这种分离式设计遵循了单一职责原则,使得系统更易于维护和扩展。

服务配置详解

Web前端服务 (shhgit-www)

shhgit-www:
  build: ./www
  container_name: shhgit.www
  ports:
    - 8080:80
  volumes:
    - ./www/public:/usr/share/nginx/html:ro

技术要点:

  • 使用Nginx作为Web服务器,提供静态文件服务
  • 将本地8080端口映射到容器内的80端口
  • 通过volume挂载实现开发时的热更新,无需重新构建镜像
  • :ro表示只读挂载,增强安全性

最佳实践建议:

  1. 生产环境中建议使用更安全的端口映射,如443(HTTPS)
  2. 可考虑添加Nginx配置优化,如gzip压缩、缓存控制等
  3. 对于高并发场景,可调整Nginx worker进程数量

核心应用服务 (shhgit-app)

shhgit-app:
  build: ./
  container_name: shhgit.app
  entrypoint: ["/app/shhgit", "--live=http://shhgit-www/push"]
  depends_on:
    - shhgit-www
  volumes:
    - ./config.yaml:/app/config.yaml:ro

技术要点:

  • 通过自定义entrypoint指定启动命令和参数
  • --live参数配置了与前端服务的通信端点
  • 使用depends_on确保服务启动顺序
  • 配置文件通过volume挂载,便于修改而不需重建镜像

关键参数解析:

  • --live=http://shhgit-www/push:指定了实时通信的WebSocket端点
  • depends_on:确保Web服务先于应用服务启动

部署实践指南

基础部署步骤

  1. 确保已安装Docker和Docker Compose
  2. 克隆项目代码到本地
  3. 根据需要修改config.yaml配置文件
  4. 执行docker-compose up -d启动服务
  5. 访问http://localhost:8080使用Web界面

配置调优建议

  1. 性能调优

    • 对于大型代码库扫描,可增加shhgit-app容器的资源限制
    • 添加CPU和内存限制参数:
      deploy:
        resources:
          limits:
            cpus: '2'
            memory: 2G
      
  2. 安全增强

    • 为容器添加只读文件系统:
      read_only: true
      
    • 限制容器权限:
      security_opt:
        - no-new-privileges:true
      
  3. 日志管理

    • 配置日志驱动和大小限制:
      logging:
        driver: "json-file"
        options:
          max-size: "10m"
          max-file: "3"
      

常见问题解决方案

端口冲突问题

如果8080端口已被占用,可以修改为其他端口:

ports:
  - 8081:80

同时需要更新www/public/script.js文件中的对应端口配置。

跨服务通信问题

确保服务间使用正确的服务名称通信:

  • 在shhgit-app容器中,通过shhgit-www主机名访问Web服务
  • 这是Docker Compose内置的DNS解析功能

配置更新问题

修改config.yaml后,需要重启shhgit-app服务:

docker-compose restart shhgit-app

架构扩展思路

添加数据库支持

对于需要持久化扫描结果的场景,可以扩展架构:

services:
  shhgit-db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - shhgit-data:/var/lib/postgresql/data

volumes:
  shhgit-data:

实现水平扩展

对于大规模扫描需求,可以实现工作节点扩展:

shhgit-worker:
  image: shhgit-app
  deploy:
    replicas: 3
  entrypoint: ["/app/shhgit", "--worker"]

总结

eth0izzle/shhgit的Docker Compose配置展示了一个典型的生产级应用容器化部署方案,体现了以下优秀实践:

  1. 服务分离架构
  2. 配置与代码分离
  3. 明确的依赖关系管理
  4. 开发友好型volume挂载

通过理解这份配置,开发者可以学习到如何设计高效的容器化应用架构,并为实际项目部署提供参考模板。