The use of Docker containers has exploded (at least within Web Development) and therefore we have a whole bunch of new tools that can be used to manage the DevOps process. However, there are a massive range of tools that can be used to achieve all of these. Be it Git hosting (GitHub, Bitbucket); Continuous Integration and Delivery and Build Tools (Jenkins, CircleCI, Drone); Docker Registry (Docker EE,, or a range of other add-on tools, there sometimes seem as many new, great products in the DevOps area as there are Javascript frameworks(!). However, I feel that GitLab offers a single solution that is able to compete with other established tools and potentially enable you to have a full professional delivery platform for free (within some restrictions on numbers).

What is GitLab?

GitLab is a Git Hosting product, however, it is much more. It bundles multiple separate ideas into a single product:

  • Git Hosting
  • CI/CD Platform
  • Artifact Storage
  • Docker Registry
  • It is Open-Source (for the Community Edition)
  • It can be self-hosted
  • It has native plugins to other tools (Slack, Jira, Redmine, Hipchat)

It is ideal for teams looking for a solution that not only allows you to run your own git hosting solution, but also bundle it with an open-source CI system. Not available at the moment with either Github of BitBucket.

Why I use GitLab

The honest truth is that 4 years ago, I was an avid Bitbucket user. And most of my DevOps tools that I employ now were bash scripts or Ansible playbooks that were deployed from single developer machines. However, in my current role, we have a large GitLab install and I have moved all of my personal projects into (the hosted solution), mainly to use the following aspects:

  • Free Git Repos
  • Free Team Setup
  • Free Custom Container Registry
  • Free CI build tools
    • All above have some limits, but for personal projects I am nowhere near the limit.
  • It is self-hostable, so if you grow larger, you can move to your own install and keep growing with limited cost.

Build, Test, Store and Distribute Docker Containers

Using GitLab CI (alongside the handy GitLab CI Dockerfile template) you can build your own custom container and store it back inside GitLab registry. Wonderful! Please have a look at the project to see more. You can even see the build status inside the GitLab CI Pipelines.

Using these workflows you are able to use GitLab to create custom containers for your software and store them. In fact, this very site is being run from a custom container that is being held inside! Cool eh?!