Конкуренты5 мин чтения2026-03-06

SonarQube в Docker: как поднять и не пожалеть

На прошлом проекте мы внедряли SonarQube. Подняли в Docker, настроили, интегрировали в пайплайн. Первые две недели команда была в восторге — столько багов наход

На прошлом проекте мы внедряли SonarQube. Подняли в Docker, настроили, интегрировали в пайплайн. Первые две недели команда была в восторге — столько багов находится! А через месяц все привыкли к 500+ issues в техдолге и перестали смотреть на отчёты.

Знакомая история?

Если вы ищете, как запустить SonarQube через Docker — статья для вас. Расскажу честно: что работает, что бесит, и когда есть смысл искать альтернативы.

Что такое SonarQube и зачем он в Docker

SonarQube — статический анализатор кода с веб-интерфейсом. Находит баги, уязвимости, code smells, считает техдолг. Показывает покрытия тестами, дубликаты кода, сложность. Красиво выглядит, строит графики.

Почему Docker? Потому что ставить SonarQube на bare metal — боль. Java, PostgreSQL, Elasticsearch, куча настроек. С Docker и docker compose это дело пяти минут. Ну, в теории.

На практике — зависит от железа. SonarQube хочет минимум 2 ГБ RAM для Elasticsearch, иначе падает. На слабых VPS не взлетит. Проверено.

Поднимаем SonarQube через docker compose

Самый простой вариант — один контейнер с встроенной базой H2. Для тестов пойдёт, для продакшена — нет.

# docker-compose.yml для тестов
version: "3.8"
services:
  sonarqube:
    image: sonarqube:community
    ports:
      - "9000:9000"
    environment:
      - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_extensions:/opt/sonarqube/extensions

volumes:
  sonarqube_data:
  sonarqube_logs:
  sonarqube_extensions:

Запускаем: docker compose up -d. Ждём минуту. Открываем http://localhost:9000. Логин-пароль: admin/admin.

Для продакшена нужна внешняя PostgreSQL. И настройки sysctl, иначе Elasticsearch не стартует:

sysctl -w vm.max_map_count=262144

Без этого получите ошибку в логах. Потыкаетесь, погуглите, найдёте. Я так и сделал.

Полный docker compose для продакшена:

version: "3.8"
services:
  sonarqube:
    image: sonarqube:community
    depends_on:
      - db
    environment:
      - SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonar
      - SONAR_JDBC_USERNAME=sonar
      - SONAR_JDBC_PASSWORD=sonar123
      - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
    ports:
      - "9000:9000"
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_extensions:/opt/sonarqube/extensions

  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar123
      - POSTGRES_DB=sonar
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  sonarqube_data:
  sonarqube_logs:
  sonarqube_extensions:
  postgres_data:

Теперь серьёзно. Это работает. Но сколько ресурсов жрёт? На моём сервере — 3.5 ГБ RAM в простое. С активным анализом — до 5 ГБ. Для маленькой команды — дорого.

Что умеет SonarQube

После поднятия сервера нужно запустить анализ. Для этого есть SonarScanner или плагины для Maven/Gradle.

Пример для GitLab CI:

# .gitlab-ci.yml
sonarqube-check:
  image: maven:3-openjdk-17
  script:
    - mvn sonar:sonar
      -Dsonar.projectKey=myproject
      -Dsonar.host.url=http://sonarqube:9000
      -Dsonar.token=$SONAR_TOKEN
  only:
    - merge_requests
    - main

Что получаете на выходе:

Есть плагины для 30+ языков. Python, Java, JavaScript, TypeScript, Go, PHP — из коробки. Для редких языков нужно ставить плагины вручную.

Качество анализа? Хорошее для типовых проблем. Находит то, что пропускают ревьюеры. Но? Много false positives. Очень много. Приходится разметить как "Won't fix" или отключать правила.

Плюсы и минусы SonarQube

Сведу в таблицу, чтобы было честно:

Плюсы Минусы
Бесплатно (Community edition) Тяжёлый — минимум 2 ГБ RAM
Поддержка 30+ языков Много false positives
Красивый UI с дашбордами Техдолг копится, никто не чистит
Интеграция с CI/CD Настройка плагинов — боль
Quality Gates — блокируем плохой код Нет AI — только правила
История анализов Сервер нужно поддерживать

Главный плюс — он работает. Десять лет на рынке, тысячи компаний используют. Документация нормальная, комьюнити большое.

Главный минус — он пассивный. Запустили анализ, получили отчёт, пошли дальше. AI-анализа нет, контекста нет. Все правила написаны людьми, адаптировать под свой проект сложно.

Для каких проектов подходит SonarQube

Идеально:

Плохо подходит:

На стартапе из 5 человек мы пробовали внедрить. Потратили неделю на настройку. Через месяц сервер упал, никто не заметил. Подняли через месяц — 2000 issues. Закрыли, пошли работать дальше.

Альтернативы SonarQube

SonarQube — не единственный вариант. Что ещё есть на рынке?

SonarCloud — SaaS-версия от тех же разработчиков. Не нужно поднимать сервер, платите за строки кода. Минимум $15/мес для маленьких команд. Работает с GitHub, GitLab, Bitbucket. Удобно, но данные уходят в облако — для российских компаний это проблема.

ESLint/Pylint/Semgrep — линтеры для конкретных языков. Легковесные, fast feedback, интегрируются в pre-commit hooks. Но нет единого интерфейса, нет истории, нет техдолга. Каждый линтер настраивается отдельно.

CodeClimate — SaaS, фокус на maintainability. Красивые отчёты, но дорого ($15/мес за разработчика) и снова данные за рубежом.

GitHub Copilot/CodeRabbit — AI-инструменты. Анализируют контекст, дают конкретные советы. Fast feedback прямо в PR. Но это зарубежные сервисы, не все могут использовать.

Distiq — российский AI-бот для code review. Работает с GitLab, GitHub, GitVerse. Анализирует каждый MR, оставляет инлайн-комментарии. Находит баги, уязвимости, проблемы с производительностью. Серверы в РФ, данные не уходят.

Когда выбрать Distiq вместо SonarQube

Если у вас:

Distiq интегрируется за 2 минуты. Добавляете webhook, всё. Никаких серверов, баз данных, sysctl. Платформа поддерживает Python, JavaScript, TypeScript, Java, Go, PHP и другие языки.

SonarQube остаётся хорошим выбором для крупных команд с выделенным DevOps. Но если вам нужен code review, который реально помогает разработчикам, а не просто копит техдолг — посмотрите в сторону AI-инструментов.

Попробуйте Distiq для автоматического code review

AI-бот анализирует каждый MR/PR и оставляет комментарии с замечаниями. Интеграция за 2 минуты.

Попробовать бесплатно

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