This repository provides GitLab Docker images for ARM64 architecture.
GitLab does not officially support ARM64 yet. As a result, GitLab does not provide Docker images for ARM64. While there are some repositories that attempt to address this issue, they often take time to release updates. This poses a challenge, especially when a security patch requires an immediate update.
To solve this problem, I created this repository providing a GitHub Action that checks for new releases daily and automatically builds a Docker image for the latest releases.
-
Automated Updates:
A GitHub Action checks the latest releases of the official GitLab Docker images and triggers the build process when a new version is available.
This ensures the repository always provides up-to-date images for ARM64. -
Fully Automatic:
No manual intervention is required. The entire process, from release checking to image building is automated. -
Compatibility:
These images are build for ARM64 architecture, making GitLab accessible to users on ARM-based platforms.
They are also compatible with AMD64 architecture. For more details, see Multi-Architecture Support
To use the Docker images built by this repository, you need:
- ARM64 Architecture (e.g. Raspberry Pi 4/5, ARM64 servers) or AMD64 Architecture (See Multi-Architecture Support)
- Docker installed on your system
Pull the Docker images from Docker Hub.
# latest GitLab Community Edition (CE)
docker pull feskol/gitlab:latest
docker pull feskol/gitlab:ce # "ce" is same as "latest"
# latest GitLab Enterprise Edition (EE)
docker pull feskol/gitlab:ee
# Specific version - replace "-ce" to "-ee" for Enterprise Edition
docker pull feskol/gitlab:17-ce
docker pull feskol/gitlab:17.7-ce
docker pull feskol/gitlab:17.7.0-ce
docker pull feskol/gitlab:17.7.0-ce.0
These images are used like GitLabβs official Docker images.
Refer to GitLab's Docker documentation for setup instructions:
Hereβs an example setup using docker-compose.yaml
:
services:
gitlab:
image: feskol/gitlab:17.7.0-ce # change the tag to your needs
container_name: gitlab
restart: unless-stopped
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
# For example: Reduce the number of running workers in order to reduce memory usage
puma['worker_processes'] = 2
sidekiq['concurrency'] = 9
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m'
This repository supports multi-architecture Docker images in addition to ARM64 images. This enhancement ensures that the Docker images can run seamlessly on both AMD64 and ARM64 architectures.
- ARM64: Optimized for ARM64 systems.
- AMD64: Uses the official GitLab Docker image.
- Cross-Platform Compatibility: Use the same image across multiple platforms.
- Streamlined Workflows: Unified image tagging for multi-arch builds simplifies deployment.
The build process creates a docker manifest for multi-arch images. For AMD64, the process leverages the official GitLab Docker image to ensure compatibility and reliability.
To pull the appropriate image for your architecture, simply use:
docker pull feskol/gitlab:latest # you can use here any tag from the DockerHub (e.g. 17.6.2-ce / 17.6-ce / ce )
Docker will automatically fetch the image matching your system architecture.
The following tags are available for the Docker images, providing flexibility and alignment with GitLab's versioning system:
-
latest
:
Points to the newest Community Edition (CE) release available. -
ce
:
Represents the newest Community Edition (CE) release available. -
ee
:
Represents the newest Enterprise Edition (EE) release available. -
Version-specific tags:
Tags are generated based on GitLab's versioning system:(major).(minor).(patch)-(edition).0
.
For example, if the newest version is17.6.1-ce.0
, the following Docker image tags are created pointing to that version:17.6.1-ce.0
(original GitLab version)17.6.1-ce
(version without the.0
suffix)17.6-ce
(major and minor version)17-ce
(major version only)
Find all available tags on Docker Hub.
Note
This project supports GitLab (CE/EE) starting from version 17 and higher!
- Stop the container:
docker compose down
- Update the
docker-compose.yaml
file to the new version tag.
# Old image tag:
services:
gitlab:
image: feskol/gitlab:17.5.4-ce # outdated version
...
# New image tag
services:
gitlab:
image: feskol/gitlab:17.6.2-ce # updated version
...
- Restart the container:
docker compose up -d
Warning
Always follow the official update guide.
Use GitLab's Upgrade Path Tool for
step-by-step guidance on update paths.
Here are the links used by this repository:
- GitLab Omnibus Docker Files
- GitLab CE Versions
- GitLab EE Versions
- DockerHub Gitlab CE
- DockerHub Gitlab EE
We welcome contributions to this project! To ensure clarity and fairness for all contributors, we require that all contributors sign our Contributor License Agreement (CLA).
By signing the CLA, you confirm that:
- You grant us the perpetual, worldwide, non-exclusive, royalty-free, irrevocable right to use, modify, sublicense, and distribute your contribution as part of this project or any other project.
- You retain ownership of your contribution, but grant us the rights necessary to use it without restriction.
- Your contribution does not violate the rights of any third party.
Before submitting a pull request, please sign the CLA using the following link:
Sign the CLA
Contributions cannot be merged unless the CLA is signed.
Thank you for your contributions and for helping us build something great!
Tests can be found in the ./tests/unit
.
To ensure everyone uses the same test suite, I provided a Dockerfile with a docker-compose.yaml file that runs the
tests.
We're using bashunit for testing our scripts. Its binary is located in the ./lib
directory.
To ensure dependencies remain up-to-date, a GitHub Action (.github/workflows/bashunit-update.yml
) has been set up to
check for new releases on a weekly basis. If a new release is found, a pull request (PR) is automatically created. Since
there are existing GitHub Actions that run tests using bashunit
, it tries to automatically merge the PR if no errors
occur.
To run the tests, run:
# Run all tests
docker compose run --rm test
# Run tests for specific folder
docker compose run --rm test ../lib/bashunit ./unit/workflows/build
If you encounter errors, try using the --verbose
option for more details.
docker compose run --rm test ../lib/bashunit --verbose ./unit
...
βββ lib # bashunit binary
βββ scripts # scripts for the build/syncversion workflows
βββ tests
βββ fixtures # fixtures for the tests
βββ helper # helping scripts (e.g. "test-case.sh"-files)
βββ unit # The actual tests
If you find this project helpful and would like to support my work:
Thank you for your support!