Sign inSign up

yilee01/synchosts

By yilee01

•Updated 12 months ago

Image
0

1.4K

yilee01/synchosts repository overview

⁠Docker Hosts 同步管理服务

一个用于管理Docker容器hosts文件映射关系的Web服务,支持通过前端界面配置IP域名映射,并自动同步到所有运行中的Docker容器。

⁠🚀 功能特性

  • Web管理界面: 现代化的Vue 3前端界面,支持添加、删除、管理IP域名映射关系
  • 实时同步: 自动检测Docker容器状态变化,实时同步hosts文件配置
  • 批量操作: 支持批量添加、删除映射关系,提高管理效率
  • 容器管理: 查看和管理所有运行中的Docker容器
  • 日志记录: 完整的操作日志记录,便于问题排查和审计
  • 定时同步: 支持定时任务自动同步,确保配置持续有效
  • RESTful API: 提供完整的REST API接口,支持第三方集成

⁠🏗️ 技术栈

⁠后端
  • Node.js - 运行时环境
  • Express.js - Web框架
  • Dockerode - Docker API客户端
  • node-cron - 定时任务调度
  • CORS - 跨域资源共享
⁠前端
  • Vue 3 - 渐进式JavaScript框架
  • Vite - 现代化构建工具
  • View UI Plus - UI组件库
  • Axios - HTTP客户端

⁠📋 系统要求

  • Node.js >= 14.0.0
  • Docker >= 20.0.0
  • 操作系统: Linux/macOS/Windows

⁠🚀 快速开始

⁠使用Docker Compose(推荐)
  1. 克隆项目

    git clone <repository-url>
    cd synchosts
    
  2. 配置环境变量

    # 设置Docker用户和组ID(可选)
    export DOCKER_USER_ID=1000
    export DOCKER_GROUP_ID=998
    
  3. 启动服务

    docker-compose up -d
    
  4. 访问应用 打开浏览器访问: http://localhost:3000⁠

⁠本地开发
  1. 安装依赖

    # 安装后端依赖
    npm install
    
    # 安装前端依赖
    cd frontend
    npm install
    
  2. 启动后端服务

    npm run dev
    
  3. 启动前端开发服务器

    cd frontend
    npm run dev
    

⁠📖 使用指南

⁠基本操作
  1. 添加映射关系

    • 在Web界面中输入IP地址和域名
    • 点击"添加映射"按钮
    • 系统会自动同步到所有运行中的容器
  2. 批量添加

    • 使用批量添加功能,支持一次性添加多个映射关系
    • 支持从文件导入映射配置
  3. 管理容器

    • 查看所有运行中的Docker容器
    • 手动触发特定容器的同步操作
    • 查看容器状态和同步历史
  4. 查看日志

    • 实时查看操作日志
    • 支持日志过滤和搜索
    • 导出日志文件

⁠🔧 API 接口

⁠映射管理
  • GET /api/hosts-mapping - 获取所有映射关系
  • POST /api/hosts-mapping - 添加映射关系
  • PUT /api/hosts-mapping/:id - 更新映射关系
  • DELETE /api/hosts-mapping/:id - 删除映射关系
⁠容器管理
  • GET /api/containers - 获取容器列表
  • POST /api/containers/:id/sync - 同步指定容器
⁠同步操作
  • POST /api/sync/all - 同步所有容器
  • POST /api/sync/container/:id - 同步指定容器
⁠日志查询
  • GET /api/logs - 获取日志列表
  • GET /api/logs/export - 导出日志

⁠⚙️ 配置说明

⁠环境变量
  • PORT - 服务端口(默认: 3000)
  • DOCKER_USER_ID - Docker用户ID
  • DOCKER_GROUP_ID - Docker组ID
⁠配置文件
  • config/hosts-mapping.json - 映射关系存储
  • config/last-sync.json - 最后同步时间记录

⁠🐛 故障排除

⁠常见问题
  1. Docker权限问题

    # 确保用户有Docker访问权限
    sudo usermod -aG docker $USER
    
  2. 端口冲突

    # 修改docker-compose.yml中的端口映射
    ports:
      - "3001:3000"  # 使用3001端口
    
  3. 容器无法访问

    • 检查Docker socket权限
    • 确认容器网络配置

⁠🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

⁠📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE⁠ 文件了解详情

⁠📞 支持

如有问题或建议,请通过以下方式联系:


注意: 使用本服务前请确保已备份重要的Docker容器配置,避免误操作导致服务中断。

Tag summary

Content type

Image

Digest

sha256:ef708dd29…

Size

60.8 MB

Last updated

12 months ago

docker pull yilee01/synchosts