Skip to content

Instantly share code, notes, and snippets.

@ceduliocezar
Created August 1, 2017 18:58
Show Gist options
  • Save ceduliocezar/b3bf93125024482b5f2f479696842046 to your computer and use it in GitHub Desktop.
Save ceduliocezar/b3bf93125024482b5f2f479696842046 to your computer and use it in GitHub Desktop.
How easily run Sonar Qube and PostgresSQL with Docker Containers

TL;DR

After installing Docker, follow three steps:
Step 1:
Run: docker network create mynet

Step 2:
Run: docker run --name sonar-postgres -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d -p 5432:5432 --net mynet postgres

Step 3:
Run: docker run --name sonarqube -p 9000:9000 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres:5432/sonar -d --net mynet sonarqube:5.6

Step 4:
Access http://localhost:9000/

How easily run Sonar Qube and PostgresSQL with Docker Containers

First install Docker on your system, it is available for Windows, Mac and Linux. Click here to download Docker

After installing run: docker version

Creating a Docker Network

In order to stablish a communication between Sonar and Postgres containers, we need to create a Docker Network. The following command will create a network called mynet.
docker network create mynet

Creating a PostgreSQL Docker Container

Sonar Qube depends on a database to works correctly, in this example we choose PostgreSQL. The command below creates and runs an instance of PostgreSQL in background with username sonar, password sonar, bounding host port 5432 with container port 5432 inside mynet Docker network.
docker run --name sonar-postgres -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d -p 5432:5432 --net mynet postgres

Creating a Sonar Qube Docker Container

Creates and runs an instance of Sonar Qube 5.6 with database user, pass and JDBC connection by parameter. Bounding the host port 9000 to container port 9000 inside mynet Docker Network.
docker run --name sonarqube -p 9000:9000 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres:5432/sonar -d --net mynet sonarqube:5.6

It works!

At this point you should have Sonar working fine, access http://localhost:9000/ and see if everything works as expected.

How to start and stop previously created Docker Container

How to start a Docker Container.

Find the CONTAINER ID using the command:
docker ps --all

Start a container with the specified CONTAINER ID.
docker start YOUR_CONTAINER_ID

How to stop a Docker Container.

Find the CONTAINER ID using the command:
docker ps --all

Stop a container with the specified CONTAINER ID
docker stop YOUR_CONTAINER_ID

Undoing everything

Following are commands in case you messed up and want to start again.

Stoping all Docker Containers

Stops all containers that are running, if you run this command more than once in a row it will return a message about parameters, this is normal since the second part of the command won't anything after the first time.
docker stop $(docker ps -a -q)

Deleting all Docker Containers

Removes all containers, make sure you stopped all containers before run this command, otherwise it won't complete correctly.
docker rm $(docker ps -a -q)

Deleting all Docker Images

Removes all images downloaded, just take care with it since you will need to download all the dependencies again.
docker rmi $(docker images -q)

@ceduliocezar
Copy link
Author

ceduliocezar commented Dec 16, 2020

Good article, a point that need attetion is PostgreSQL container isn't mapped for a volume... so if stops, you maybe lose all your data.

@acidiney 🥇 can you share your solution to this problem? I never mapped a volume.

My use case was to run local instance to briefly check some points, not intended to keep the information there for longer periods.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment