Dockerize GitLab with ActionCable & Puma
This is an issue for gathering information and tracking work to containerize GitLab with ActionCable with Docker in order to deliver #17589.
Real-time features require a backend that can upgrade WebSocket requests and maintain open connections. At least in the first iteration we will use ActionCable, which ships with Rails, for this.
On GitLab.com we will support these requests through an isolated backend that can be scaled independently, with the rest of the application protected while we measure resource usage.
Kubernetes (see gitlab-com/gl-infra/delivery#749 (closed)) will be used to deploy, run and scale the application in pods. However, firstly the application needs to be containerized.
Much of GitLab is already containerized in the https://gitlab.com/gitlab-org/build/CNG project. We'll need to add a sub-directory there with Docker configurations for running GitLab on a Puma server with ActionCable and dependencies.
Some interesting images in that project:
- gitlab-rails - The Rails code needed for both API and web.
- gitlab-webservice - The webservice container that exposes Rails webservers (Unicorn or Puma).
- gitlab-workhorse - The GitLab Workhorse container providing smart-proxy in front of Rails.
- gitlab-sidekiq - Useful as an example of service, already running in production, that uses some of the other images.
Work is being done separately to configure Helm charts.