Sonar: управление сервисами и портами на локальном хосте

Sonar: управление сервисами и портами на локальном хосте

Sonar — это CLI инструмент для просмотра и управления сервисами, которые слушают порты на локальном хосте. Он упрощает разработку, позволяя организовать и контролировать все активные процессы и контейнеры, работающие на твоем компьютере.

Sonar группирует порты по проектам и именам сервисов, что упрощает взаимодействие с ними. Например, с помощью команды sonar start ты можешь запустить серверы разработки и наблюдать за их состоянием в виде дерева, а также выполнять команды для их ожидания, ведения логов и остановки одним нажатием. Это делает его полезным как для разработчиков, запускающих приложения и контейнеры, так и для тех, кто хочет получить упорядоченный обзор всех работающих сервисов.

Проект написан на Go и устанавливается через Homebrew или скрипт установки. Учти, что для использования Homebrew нужно доверять стороннему репозиторию. Ограничений вроде необходимости API-ключа или лицензионных ограничений у Sonar нет, однако он может быть менее полезен в сложных облачных окружениях, где службы могут быть распределены по разным хостам.

``` ██████ ███ ██████ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ███ ██ ██ ██ ██ ██ ██ ``` Узнай, что работает на твоём компьютере.

Sonar — это инструмент, который показывает все процессы, слушающие на localhost, и группирует их по репозиториям или сервисам. Он позволяет запускать, следить за логами и останавливать все твои серверы и контейнеры Docker с помощью одной команды. Кроме того, Sonar автоматически подбирает порты для запуска, так что ты можешь запускать несколько экземпляров одного и того же приложения без конфликтов портов.

Установка

Sonar можно установить несколькими способами:

  • Homebrew (macOS / Linux):
    brew install raskrebs/sonar/sonar
    Для использования стороннего репозитория нужно сначала доверить его:
    brew trust raskrebs/sonar
  • Скрипт установки:
    curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | bash
    Этот скрипт скачивает последний бинарный файл в `~/.local/bin` и добавляет его в PATH. Можно использовать его и на Windows:
    irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
  • Используя Go:
    go install github.com/raskrebs/sonar@latest

Запуск и использование

Для работы с Sonar в корне репозитория нужно создать файл конфигурации `sonar.yaml`, который описывает, как запускаются твои сервисы. Вот пример структуры файла:

name: my-app
services:
  - name: db
    cmd: docker compose up db
    port: 5432
  - name: api
    cmd: uv run uvicorn app:app --port ${port}
    port: auto
    depends_on: [db]
  - name: frontend
    cmd: npm run dev -- --port ${port} --strictPort
    port: auto
    depends_on: [api]
    env:
      VITE_API_URL: ${api.url}

После этого можно запустить проект с помощью команды:

sonar start

Sonar автоматически выберет свободные порты для сервисов с параметром `port: auto`. Это позволяет запустить несколько экземпляров рабочего дерева рядом, не сталкиваясь с конфликтами портов.

Если файл `sonar.yaml` отсутствует, можно запустить команду напрямую:

sonar start -- npm run dev

Команды

Некоторые полезные команды для работы с Sonar:

  • Список запущенных процессов:
    sonar list --tree
  • Запуск сервисов:
    sonar start
  • Остановка сервисов:
    sonar down
  • Получение информации о сервисе:
    sonar info 3000

Ограничения

Sonar работает только на платформах macOS, Linux и Windows, но некоторые функции, такие как desktop-приложение, пока недоступны для Windows. Важно также помнить, что Sonar может не видеть процессы, запущенные от других пользователей. Для их отображения рекомендуется использовать `sudo`.

Кроме того, если порт управляется другой системой (например, через systemd или Docker с параметром `restart: always`), Sonar не сможет его остановить и отключить. И, конечно, необходимо убедиться, что все зависимости, указанные в `sonar.yaml`, корректны, иначе могут возникнуть ошибки при запуске.

Открыть на GitHub: raskrebs/sonar →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте