Запуск Sonarqube с docker-compose с использованием томов монтирования - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь запустить Sonarqube в контейнере Docker на сервере Centos 7, используя docker-compose.Все работает, как и ожидалось, используя именованные тома, настроенные в этом файле docker-compose.yml:

version: "3"

services:
  sonarqube:
    image: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_bundled_plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_bundled_plugins:
  postgresql:
  postgresql_data:

Однако мой каталог / var / lib / docker / volume недостаточно велик, чтобыдом названных томов.Итак, я изменил файл docker-compose.yml, чтобы использовать тома монтирования, как показано ниже.

version: "3"

services:
  sonarqube:
    image: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - /data/sonarqube/conf:/opt/sonarqube/conf
      - /data/sonarqube/data:/opt/sonarqube/data
      - /data/sonarqube/extensions:/opt/sonarqube/extensions
      - /data/sonarqube/bundled_plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - /data/postgresql:/var/lib/postgresql
      - /data/postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

Однако после запуска docker-compose up -d приложение запускается, но ни на один из томов монтирования привязки не записываются.В результате плагины Sonarqube не загружаются, а база данных sonar postgreSQL не инициализируется.Я думал, что это может быть проблема selinux, но я временно отключил его, но безуспешно.Я не уверен, что смотреть дальше.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Звучит так, как будто контейнер работает, и, как вы упомянули, Sonarqube запускается.Когда он запускается, это показывает, что он использует H2 в памяти дБ?После запуска docker-compose up -d используйте docker logs -f <container_name>, чтобы увидеть, что происходит при запуске Sonarqube.Чтобы упростить просмотр журналов с известным именем, я также предлагаю вам добавить имя контейнера в службу Sonarqube.Например, container_name: sonarqube.

Кроме того, хотя я знаю, что планируется отказаться от использования переменных среды для подключения имени пользователя, пароля и jdbc, мне больше повезло в docker-compose с использованием переменных среды, а не соответствующего значения свойства.Для строки подключения попробуйте: SONARQUBE_JDBC_URL: jdbc:postgresql://db/sonar без указания порта по умолчанию для postgres.

0 голосов
/ 12 декабря 2018

Я думаю, что мой ответ от "Как сохранить конфигурацию и аналитику при вызовах контейнеров в образе докера Sonarqube" также поможет вам.

Для хорошей меры я также вставил его вздесь:


.....

Обратите внимание на эту строку SONARQUBE_HOME в файле Docker для изображения docker-sonarqube.Мы можем управлять этой переменной среды.

При использовании docker run.Просто сделайте:

txt docker run -d \ ... ... -e SONARQUBE_HOME=/sonarqube-data -v /PERSISTENT_DISK/sonarqubeVolume:/sonarqube-data

Это заставит Sonarqube создавать папки conf, data и т. Д. И сохранять в них данные.При необходимости.


Или с Kubernetes.В вашем файле развертывания YAML.Выполните:

txt ... ... env: - name: SONARQUBE_HOME value: /sonarqube-data ... ... volumeMounts: - name: app-volume mountPath: /sonarqube-data

И name в свойстве volumeMounts указывает на том в разделе volumes файла YAML развертывания Kubernetes.Это снова заставит Sonarqube использовать /sonarqube-data mountPath для создания расширений, папок conf и т. Д., А затем сохранять в них данные.

И вуаля ваши данные Sonarqube сохраняются.

Надеюсь, это поможет другим.

Обратите внимание, что примеры запуска YAML и Docker не являются исчерпывающими.Они сосредоточены на проблеме сохранения данных Sonarqube.


Попробуйте BobC и дайте мне знать.

Хорошего дня.

...