Gerrit has finally landed on Docker!
The first official set of Docker images have been uploaded and are available on DockerHub.
Thanks to the new Gerrit installer project a new set of native distribution means are becoming available: starting from the native packages for Linux to the Docker images published today.
Well, why not? Docker is an amazing technology for packaging an application with its dependencies and activating it in a sandbox virtualised environment. It allows a more effective isolation of an application container and at the same time assures to have a clear separation between the application distribution and its data.
Additionally for those who want to run more than one Gerrit instance at a time, it allows to define specific QoS for the activated docker containers and assign to them an internal IP and ports to be routed in a multi-hosted environment.
How can I get Gerrit on Docker?
Well, it is simpler than you can imagine. Once you’ve installed Docker on your Linux box you just need to execute the following commands:
To download and run Gerrit on CentOS 7:
$ docker pull gerritforge/gerrit-centos7 $ docker run -d -p 8080:8080 -p 29418:29418 \ gerritforge/gerrit-centos7
To download Gerrit and run Ubuntu 15.04:
$ docker pull gerritforge/gerrit-ubuntu15.04 $ docker run -d -p 8080:8080 -p 29418:29418 \ gerritforge/gerrit-ubuntu15.04
Gerrit will be started inside a Docker container and will be exposed on ports 8080 and 29418 on the host machine IP.
How can I customise my Docker container?
Gerrit Dockerfiles are available in the gerrit-installer project and can be easily customised and tailored to your needs. A much better idea however would be to generate a new Dockerfile that starts from Dockerhub image and then change your Gerrit configuration files and steps to perform your desired set-up.
Dockerfile sample for Gerrit listening on HTTP port 8090:
FROM gerritforge/gerrit-centos7 MAINTAINER GerritForge USER gerrit RUN git config -f /var/gerrit/etc/gerrit.config httpd.listenurl http://*:8090/ EXPOSE 29418 8090 # Start Gerrit CMD /var/gerrit/bin/gerrit.sh start && tail -f /var/gerrit/logs/error_log
How can I install a specific Gerrit Docker version?
All Docker images published are associated to a specific Gerrit tag representing the version installed on that image. The default is always the latest Gerrit version that in this case is 2.11.
To download and run a Gerrit 220.127.116.11 Docker image on CentOS 7:
$ docker pull gerritforge/gerrit-centos7:18.104.22.168 $ docker run -d -p 8080:8080 -p 29418:29418 \ gerritforge/gerrit-centos7:22.214.171.124
What about having typical Gerrit configurations as Dockerfiles?
There are a lot of possible Gerrit configuration settings but the most typical ones are:
- LDAP authentication
- OAuth with Google / GitHub authentication
- Master / Slave with Git over SSH
- Master / Slave with Git over HTTPS
- PostgreSQL DB
- MySQL DB
All the above settings can be represented by a set of Dockerfiles similar to the one above mentioned: they will all start from a plain Gerrit Docker image (e.g. gerritforge/gerrit-centos7) and follow with the amended settings.
Where can I find the “pre-digested” Dockerfiles for the typical Gerrit configurations?
We are planning to enrich the Gerrit installer project with all the above typical scenarios and publish the associated Dockerfiles so that people can “pick&mix” the perfect recipe for a flawless installation.
Have fun with Gerrit and Docker, no more installation tears with Gerrit!