Перейти до змісту

Встановлення на Linux (Docker)

Інструкція описує повний цикл розгортання SonarQube Server Enterprise Edition у Docker-контейнерах на чистій Linux VM.

Розділи 1 і 2 відрізняються залежно від дистрибутива, розділ 3 і далі — спільні.


1. Debian / Ubuntu

Перевірено на Ubuntu 22.04 LTS.

1.1 Оновлення системи

sudo apt update && sudo apt upgrade -y

1.2 Встановлення залежностей

sudo apt install -y ca-certificates curl gnupg

1.3 Додавання GPG-ключа Docker

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

1.4 Додавання репозиторію Docker

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

1.5 Встановлення Docker Engine

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.6 Перевірка встановлення

sudo docker run hello-world

1.7 (Опційно) Запуск docker без sudo

sudo usermod -aG docker $USER

Після виконання вийдіть і зайдіть у сесію заново (або sudo newgrp docker), щоб зміна набула чинності.

Далі перейдіть до розділу Ядрові налаштування.


2. RHEL / CentOS / Rocky / AlmaLinux

2.1 Оновлення системи

sudo dnf update -y

2.2 Встановлення Docker Engine

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo docker run hello-world

2.3 (Опційно) Запуск docker без sudo

sudo usermod -aG docker $USER

2.4 SELinux

Якщо SELinux у режимі enforcing, для volume-мапінгу контейнерів потрібен суфікс :z або :Z у шляхах монтування, інакше SonarQube не матиме доступу до директорій даних.

Перевірка режиму:

getenforce

Тимчасове послаблення для тестового POC:

sudo setenforce 0

Важливо

setenforce 0 не рекомендовано для production. Для постійного розгортання використовуйте суфікси :z / :Z у параметрах -v.

2.5 Firewalld

На відміну від Ubuntu, RHEL-родина зазвичай має активний firewalld — відкрийте порт 9000:

sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --reload

3. Ядрові налаштування

SonarQube Server використовує вбудований Elasticsearch, який вимагає підвищених лімітів на рівні хоста.

Обов'язковий крок

Без цього кроку контейнер SonarQube запуститься, але Elasticsearch впаде одразу після старту.

3.1 vm.max_map_count та fs.file-max

sudo tee /etc/sysctl.d/99-sonarqube.conf <<EOF
vm.max_map_count=524288
fs.file-max=131072
EOF
sudo sysctl --system

3.2 Ліміти файлових дескрипторів та потоків

sudo tee /etc/security/limits.d/99-sonarqube.conf <<EOF
root   -   nofile   131072
root   -   nproc    8192
EOF

4. Розгортання контейнерів

4.1 Створення Docker-мережі

sudo docker network create sonarnet

4.2 Створення volumes

sudo docker volume create sonarqube_data
sudo docker volume create sonarqube_logs
sudo docker volume create sonarqube_extensions
sudo docker volume create sonarqube_postgres

4.3 Запуск PostgreSQL

sudo docker run -d --name sonarqube-db \
  --network=sonarnet \
  --restart unless-stopped \
  -e POSTGRES_USER=sonar \
  -e POSTGRES_PASSWORD=sonar \
  -e POSTGRES_DB=sonarqube \
  -v sonarqube_postgres:/var/lib/postgresql/data \
  postgres:15

4.4 Перевірка, що БД піднялась

sudo docker ps

Контейнер sonarqube-db має бути у статусі Up.

4.5 Запуск SonarQube Server (Enterprise Edition)

sudo docker run -d --name sonarqube \
  --network=sonarnet \
  --restart unless-stopped \
  -p 9000:9000 \
  -e SONAR_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonarqube \
  -e SONAR_JDBC_USERNAME=sonar \
  -e SONAR_JDBC_PASSWORD=sonar \
  -v sonarqube_data:/opt/sonarqube/data \
  -v sonarqube_logs:/opt/sonarqube/logs \
  -v sonarqube_extensions:/opt/sonarqube/extensions \
  sonarqube:enterprise

4.6 Спостереження за логами запуску

sudo docker logs -f sonarqube

Дочекайтесь рядка SonarQube is operational (зазвичай 1–3 хвилини).

Примітка

Ctrl+C виходить з перегляду логів і не зупиняє контейнер.

4.7 Перевірка в браузері

hostname -I

Відкрийте http://<IP_машини>:9000. Логін/пароль за замовчуванням: admin / admin — система одразу попросить змінити пароль.


5. Наступні кроки