Файл docker-compose для запуска сервера SonarQube
Опубликовано:
Используемые термины: Docker, SonarQube.
В инструкции мы рассмотрим небольшой сценарий по запуску сервера SonarQube в качестве контейнера с помощью docker-compose.
Предварительная настройка системы
Для корректной работы SonarQube необходимо отредактировать значения двух параметров ядра операционной системы:
- vm.max_map_count — максимальное количество областей памяти, которые может использовать процесс. Без этого Elasticsearch упадет сразу после запуска.
- fs.file-max — максимальное количество одновременно открытых файлов во всей системе.
Открываем файл:
vi /etc/sysctl.conf
Добавляем записи:
vm.max_map_count=524288
fs.file-max=131072
Применяем:
sysctl -p
Файлы docker-compose и env
Создаем каталог для файлов sonarqube и переходим в него:
mkdir /opt/sonarqube && cd /opt/sonarqube
Создаем файл docker compose:
vi docker-compose.yml
services:
sonarqube:
image: sonarqube:${SQ_VER}
container_name: sonarqube
hostname: sonarqube
restart: unless-stopped
ports:
- "9000:9000"
environment:
TZ: ${TZONE}
SONAR_JDBC_USERNAME: ${DB_USER}
SONAR_JDBC_PASSWORD: ${DB_PASS}
SONAR_JDBC_URL: jdbc:postgresql://sonardb:5432/${DB_NAME}
volumes:
- ./sonarqube/data:/opt/sonarqube/data
- ./sonarqube/extensions:/opt/sonarqube/extensions
- ./sonarqube/logs:/opt/sonarqube/logs
depends_on:
sonardb:
condition: service_healthy
ulimits:
nofile:
soft: 131072
hard: 131072
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:9000/api/system/status | grep -q '\"status\":\"UP\"'"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
sonardb:
image: postgres:${DB_PGVER}
container_name: sonardb
hostname: sonardb
restart: unless-stopped
environment:
TZ: ${TZONE}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_DB: ${DB_NAME}
volumes:
- ./postgresql/data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
И также создадим конфигурационный файл:
vi .env
TZONE=Europe/Moscow
SQ_VER=26.6.0.123539-community
DB_PGVER=16-alpine
DB_USER=sonar
DB_PASS=12345678
DB_NAME=sonar
* замените значения на свои:
- TZONE — временная зона, с которой будет отображаться время сервиса.
- SQ_VER — версия SonarQube. Актуальную можно посмотреть на DockerHub.
- DB_PGVER — версия PostgreSQL.
- DB_USER — имя пользователя, который будет создан при первом запуске PostgreSQL.
- DB_PASS — пароль, который будет назначен пользователю при первом запуске PostgreSQL.
- DB_NAME — имя базы данных. Как правило, совпадает с именем пользователя.
Сценарий готов к работе.
Запуск
Перед запуском контейнеров создадим следующие каталоги:
mkdir -p ./sonarqube/{data,extensions,logs}
И задаем владельца с идентификатором 1000 (от него запускается процесс sonarqube):
chown -R 1000:1000 ./sonarqube
Теперь можно запустить контейнеры:
docker-compose up -d
Проверить статус можно командой:
docker-compose ps
Проверить, что сервис отвечает можно командой:
curl -s http://localhost:9000/api/system/status
Теперь можно открыть браузер и ввести адрес http://<IP-адрес хоста docker>:9000/ — вводим логин с паролем admin / admin. И меняем пароль на новый.
Можно пользоваться сервером.