Docker-compose Build SonarQube

In this tutorial, How to use Docker-compose to build SonarQube.

Build SonarQube with Docker-compose

  • WebApp: Create Mysql with Docker-compose
  • SonarQube: Create Mysql with Docker-compose
  • And Launch SonarQube with Docker-compose

Folder Structure for SonarQube

[vagrant@localhost ~]$ tree docker
 docker
 ├── docker-compose.yml
 ├── mysql
 │   ├── conf
 │   │   └── custom.cnf
 │   └── init
 │       ├── 1_create_db.sql
 │       ├── 2_create_user.sql
 │       └── 3_grant.sql
 └── sonarqube
 4 directories, 5 files

Mysql Configure

Create file ./mysql/conf/custom.cnf

The content as below

[mysqld]
character-set-server=utf8
lower_case_table_names=1
explicit_defaults_for_timestamp=true

Create two Database

Create database with “./mysql/init/1_create_db.sql” file.

-- For WebApp
CREATE DATABASE IF NOT EXISTS items DEFAULT CHARACTER SET UTF8;
-- For SonarQube
CREATE DATABASE IF NOT EXISTS sonar DEFAULT CHARACTER SET UTF8;

User for SonarQube

Create user with “./mysql/init/2_create_user.sql” file

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

Grant user

Grant user for sonar with “./mysql/init/3_grant.sql” file.

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

Example docker-compose file as below

version: '3.5'
services:
 mysql:
     image: mysql:5.7.21
     container_name: mysql
     ports:
       - 3306:3306
     volumes:
       - ./mysql/init:/docker-entrypoint-initdb.d
       - ./mysql/conf/:/etc/mysql/conf.d
     networks:
       - sonarnet
     environment:
       MYSQL_ROOT_PASSWORD: root
     restart: always
 sonarqube:
     image: sonarqube:7.0
     container_name: sonarqube
     depends_on:
       - mysql
     volumes:
       - sonarqube_conf:/opt/sonarqube/conf
       - sonarqube_data:/opt/sonarqube/data
       - sonarqube_extensions:/opt/sonarqube/extensions
       - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
     networks:
       - sonarnet
     command: -Dsonar.web.context=/sonarqube
     ports:
       - 9000:9000
       - 9092:9092
     environment:
       - SONAR_JDBC_USERNAME=sonar
       - SONAR_JDBC_PASSWORD=sonar
       - SONAR_JDBC_URL=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
     restart: always
networks:
   sonarnet:
     driver: bridge
volumes:
   sonarqube_conf:
   sonarqube_data:
   sonarqube_extensions:
   sonarqube_bundled-plugins:

Build and start with Docker-compose

$ cd docker
$ docker-compose -f docker-compose.yml up -d

Access to SonarQube login page

  • Link access: http://127.0.0.1:9000/sonarqube
  • User/Password: admin/admin

As result the picture below

Access to SonarQube login page

Stop SonarQube with Docker-compose

$ cd docker
$ docker-compose -f docker-compose.yml stop

You have installed SonarQube with Docker-compose. Thank you for reading!

, ,

About HuuPV

My name is Huu. I love technology and especially Devops Skill such as Docker, vagrant, git so forth. I likes open-sources. so I created DevopsRoles.com site to share the knowledge that I have learned. My Job: IT system administrator. Hobbies: summoners war game, gossip.
View all posts by HuuPV →

Leave a Reply

Your email address will not be published. Required fields are marked *

Comment moderation is enabled. Your comment may take some time to appear.

This site uses Akismet to reduce spam. Learn how your comment data is processed.