evo-container-apps-dns-checker
Описание
Языки
- Go82,9%
- Vue11%
- HTML2,2%
- JavaScript1,5%
- Shell1,4%
- Dockerfile1%
DNS Monitor
Веб-приложение для мониторинга состояния DNS записей с использованием Go 1.25 и Vue.js 3.5.27.
Особенности
- Backend: Go 1.25 с Gin framework
- Frontend: Vue.js 3.5.27 с Vue Router
- База данных: SQLite
- Мониторинг: Фоновая проверка DNS записей каждую секунду
- Интерфейс: Responsive SPA с автообновлением
- Развертывание: Docker и Docker Compose
Структура проекта
├── backend/
│ ├── main.go # Основное приложение
│ ├── go.mod # Go модули
│ ├── models/ # Модели данных
│ ├── handlers/ # HTTP обработчики
│ ├── services/ # Бизнес-логика
│ └── database/ # Работа с БД
├── frontend/
│ ├── src/
│ │ ├── components/ # Vue компоненты
│ │ ├── views/ # Vue страницы
│ │ ├── router/ # Vue Router
│ │ └── services/ # API сервисы
│ ├── public/ # Статические файлы
│ └── package.json # NPM зависимости
├── Dockerfile # Docker конфигурация
├── docker-compose.yml # Docker Compose
└── README.md # Этот файл
Быстрый старт
С помощью Docker Compose (рекомендуется)
- Клонируйте репозиторий:
- Запустите приложение:
- Откройте http://localhost:8080 в браузере
Ручной запуск
Backend
- Перейдите в директорию backend:
- Установите зависимости:
- Запустите сервер:
Frontend
- Перейдите в директорию frontend:
- Установите зависимости:
- Запустите dev сервер:
- Откройте http://localhost:3000 в браузере
API Эндпоинты
DNS Проверки
- Создать новую DNS проверкуPOST /api/dns-checks- Получить список всех проверокGET /api/dns-checks- Получить детальную информацию о проверкеGET /api/dns-checks/:id- Удалить DNS проверкуDELETE /api/dns-checks/:id
Примеры запросов
Создание DNS проверки
Получение списка проверок
База данных
Приложение использует SQLite базу данных с двумя таблицами:
dns_checks
- Уникальный идентификаторid- Название проверкиname- Описаниеdescription- DNS запись для проверкиdns_record- JSON массив IP адресов DNS серверовresolver_ips- Время созданияcreated_at- Время обновленияupdated_at- Флаг активностиis_active
dns_check_results
- Уникальный идентификаторid- ID связанной проверкиdns_check_id- IP адрес DNS сервераresolver_ip- Статус проверки (success/timeout/error)status- Время ответа в миллисекундахresponse_time_ms- Сообщение об ошибкеerror_message- Время проверкиchecked_at
Мониторинг
Приложение выполняет фоновую проверку DNS записей каждую секунду:
- Получает все активные DNS проверки из базы данных
- Для каждой проверки выполняет DNS запрос к указанным серверам
- Сохраняет результаты в базу данных
- Логирует ошибки при необходимости
Развертывание
Docker
Сборка образа:
Запуск контейнера:
Docker Compose
Cloud.ru Container Apps
Для развертывания в Cloud.ru Container Apps используйте готовый Docker образ:
Текущая версия:
Подробная инструкция по деплою доступна в файле
Конфигурация
Переменные окружения:
- Режим работы Gin (debug/release)GIN_MODE- Порт приложения: 8080 (можно изменить в main.go)
Разработка
Настройка VS Code
Для эффективной разработки с использованием Kilo Code плагина, добавьте следующие настройки в VS Code:
Эти настройки уже добавлены в файл в проекте. Они обеспечивают:
- Автоматическую загрузку подсказок из папки .kilocode
- Применение правил для git commit из файла .kilocode/git_commit_hints.md
- Использование инструкций для развертывания из .kilocode/containerapps_deployment_hints.md
Git Commit Guidelines
Проект использует Conventional Commits формат для сообщений коммитов. Подробные инструкции доступны в файле .
Основные правила:
- Использовать английский язык для сообщений
- Формат: <type>[optional scope]: <description>
- Типы:
,feat,fix,docs,style,refactor,testchore
Примеры:
feat(dns): add DNS monitoring service
fix(handler): resolve null pointer exception
docs: update API documentation
Backend
- Использует Go 1.25
- Gin framework для HTTP сервера
- GORM для работы с SQLite
- Стандартная библиотека net для DNS запросов
Frontend
- Vue.js 3.5.27
- Vue Router для навигации
- Axios для HTTP запросов
- CSS без фреймворков для простоты
Лицензия
MIT License