Create a docker image per GitLab service
As part of our effort to support a cloud native deployment, we should consider moving away from the Docker
all in one image that we officially support.
Having one service per container would allow us to have more flexibility at GitLab.com scale, and better align with cloud native best practices. This would also allow us to cover a section of the market where our omnibus-gitlab package or Docker
all in one were not possible to use, due to requiring root permissions.
We should consider creating separate docker images for:
- Unicorn Web
- Unicorn API
We should consider using official images for:
- Registry #2441
The docker images we would create would need to have a common way of configuration, probably using ENV variables. The details of this are to be decided.
This would allow us to not only create charts that are simpler to scale, but also allow more flexibility with external services.
These images could still be built in one place together with the rest of our build process.
Separating services would also allow us to remove the
root requirement that we currently have in our official image.
To make things clear, we would not be separating the existing Docker image but we would be introducing the 3rd option. This 3rd option would be available through Helm Charts at first, down the line we could add other options.
Work on this is being done together with the Production team.
It can be separated into:
- Running services standalone in the current GitLab.com staging/production infrastructure
- Containerising the standalone service and running it in staging/production
- Creating a chart and setting up a k8s cluster for the service
changed the descriptionToggle commit list