https://github.com/feskol/gitlab-arm64
GitLab (CE/EE) Docker Image for ARM64 - Up-to-Date Images through automated GitHub-Actions
https://github.com/feskol/gitlab-arm64
arm arm64 arm64-images containers docker docker-image gitlab gitlab-arm64 gitlab-ce gitlab-ce-docker gitlab-docker gitlab-docker-image gitlab-ee gitlab-ee-docker raspberry-pi raspberry-pi-3 raspberry-pi-4 raspberry-pi-docker
Last synced: 3 months ago
JSON representation
GitLab (CE/EE) Docker Image for ARM64 - Up-to-Date Images through automated GitHub-Actions
- Host: GitHub
- URL: https://github.com/feskol/gitlab-arm64
- Owner: feskol
- License: apache-2.0
- Created: 2024-11-27T18:27:02.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-01-31T00:46:05.000Z (3 months ago)
- Last Synced: 2025-01-31T01:27:14.244Z (3 months ago)
- Topics: arm, arm64, arm64-images, containers, docker, docker-image, gitlab, gitlab-arm64, gitlab-ce, gitlab-ce-docker, gitlab-docker, gitlab-docker-image, gitlab-ee, gitlab-ee-docker, raspberry-pi, raspberry-pi-3, raspberry-pi-4, raspberry-pi-docker
- Language: Shell
- Homepage: https://hub.docker.com/r/feskol/gitlab
- Size: 108 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# GitLab (CE/EE) Docker Image for ARM64
[![build-github-action][github-actions-badge-build]][github-actions-build]
[![syncversion-github-action][github-actions-badge-syncversion]][github-actions-syncversion]
[![GitHub Discussions][github-discussions-badge]][github-discussions-link]
[![Docker Image][feskol-docker-image-badge]][dockerhub-link]
[![Docker Pulls][dockerhub-badge-pulls]][dockerhub-tags]
[![gitlab-ce-latest][dockerhub-badge-latest-version-ce]][dockerhub-tags]
[![gitlab-ee-latest][dockerhub-badge-latest-version-ee]][dockerhub-tags]
[![gitlab-ce-latest-size][dockerhub-badge-image-size-ce]][dockerhub-tags]
[![gitlab-ee-latest-size][dockerhub-badge-image-size-ee]][dockerhub-tags]
[![Supported GitLab Versions][supported-gitlab-versions-badge]][dockerhub-link]
[![Buy Me A Coffee][support-badge-buy-me-coffee]][support-buy-me-coffee]
[![PayPal][support-badge-paypal-me]][support-paypal-me][github-actions-build]: https://github.com/feskol/gitlab-arm64/actions/workflows/build.yml?query=branch%3Amain
[github-actions-badge-build]: https://github.com/feskol/gitlab-arm64/actions/workflows/build.yml/badge.svg?branch=main
[github-actions-syncversion]: https://github.com/feskol/gitlab-arm64/actions/workflows/syncversion.yml?query=branch%3Amain
[github-actions-badge-syncversion]: https://github.com/feskol/gitlab-arm64/actions/workflows/syncversion.yml/badge.svg?branch=main
[github-discussions-badge]: https://img.shields.io/github/discussions/feskol/gitlab-arm64?logo=github&logoColor=959da5&label=Discussions&labelColor=333a40&color=f479bb
[github-discussions-link]: https://github.com/feskol/gitlab-arm64/discussions
[feskol-docker-image-badge]: https://img.shields.io/badge/Image-feskol/gitlab-blue?logo=docker
[dockerhub-link]: https://hub.docker.com/r/feskol/gitlab
[dockerhub-tags]: https://hub.docker.com/r/feskol/gitlab/tags
[github-package-gitlab]: https://github.com/feskol/gitlab-arm64/pkgs/container/gitlab
[dockerhub-badge-pulls]: https://img.shields.io/docker/pulls/feskol/gitlab?logo=docker
[dockerhub-badge-latest-version-ce]: https://img.shields.io/docker/v/feskol/gitlab/ce?label=gitlab-ce&logo=docker
[dockerhub-badge-latest-version-ee]: https://img.shields.io/docker/v/feskol/gitlab/ee?label=gitlab-ee&logo=docker
[dockerhub-badge-image-size-ce]: https://img.shields.io/docker/image-size/feskol/gitlab/ce?label=gitlab-ce&logo=docker
[dockerhub-badge-image-size-ee]: https://img.shields.io/docker/image-size/feskol/gitlab/ee?label=gitlab-ee&logo=docker
[supported-gitlab-versions-badge]: https://img.shields.io/badge/Supported_GitLab_Versions-^17-orange?logo=gitlab
[support-buy-me-coffee]: https://buymeacoffee.com/feskol
[support-badge-buy-me-coffee]: https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?&logo=buy-me-a-coffee&logoColor=black
[support-paypal-me]: https://paypal.me/feskol
[support-badge-paypal-me]: https://img.shields.io/badge/PayPal_Me-003087?logo=paypal&logoColor=fff## π Overview
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.The ARM64 Docker images are typically available **within 12 hours** after the official GitLab Docker images get
released.## β¨ Features
- **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](#-multi-architecture-support)## π Requirements
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](#-multi-architecture-support))
- **Docker** installed on your system## π οΈ Usage
### Pull the Docker images:
The Docker images are available on [Docker Hub][dockerhub-tags] and [GitHub Packages][github-package-gitlab].
Both registries contain identical tags.*For clarity, we use the Docker Hub image wherever a Docker image is used.
If you prefer to use the GitHub Packages image, simply add `ghcr.io/` as a prefix to the image name.*
*Example: `feskol/gitlab:latest `β `ghcr.io/feskol/gitlab:latest`*#### Docker Hub
Pull the Docker images from [Docker Hub][dockerhub-tags].
```bash
# 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.8-ce
docker pull feskol/gitlab:17.8.1-ce
docker pull feskol/gitlab:17.8.1-ce.0
```#### GitHub packages
Pull the Docker images from [GitHub Packages][github-package-gitlab].
```bash
# latest GitLab Community Edition (CE)
docker pull ghcr.io/feskol/gitlab:latest
docker pull ghcr.io/feskol/gitlab:ce # "ce" is same as "latest"# latest GitLab Enterprise Edition (EE)
docker pull ghcr.io/feskol/gitlab:ee# Specific version - replace "-ce" to "-ee" for Enterprise Edition
docker pull ghcr.io/feskol/gitlab:17-ce
docker pull ghcr.io/feskol/gitlab:17.8-ce
docker pull ghcr.io/feskol/gitlab:17.8.1-ce
docker pull ghcr.io/feskol/gitlab:17.8.1-ce.0
```### Setup instructions
These images are used like GitLabβs official Docker images.
Refer to **GitLab's Docker** documentation for setup instructions:- [https://docs.gitlab.com/ee/install/docker/installation.html](https://docs.gitlab.com/ee/install/docker/installation.html)
Hereβs an example setup using `docker-compose.yaml`:
```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'
```---
## π³ Multi-Architecture Support
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.### Supported Architectures
- **ARM64**: Optimized for ARM64 systems.
- **AMD64**: Uses the official GitLab Docker image.### Benefits
- **Cross-Platform Compatibility**: Use the same image across multiple platforms.
- **Streamlined Workflows**: Unified image tagging for multi-arch builds simplifies deployment.### How It Works
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.### Usage
To pull the appropriate image for your architecture, simply use:
```bash
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.
## π·οΈ Tags
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 is `17.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](https://hub.docker.com/r/feskol/gitlab/tags).
> [!NOTE]
> This project supports **GitLab (CE/EE)** starting from version **17 and higher**!## π Update
#### Using Docker Compose
1. Stop the container:
```bash
docker compose down
```2. Update the `docker-compose.yaml` file to the new version tag.
```yaml
# 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
...
```3. Restart the container:
````bash
docker compose up -d
````> [!WARNING]
> Always follow the [official update guide](https://docs.gitlab.com/ee/update/).
> Use GitLab's [Upgrade Path Tool](https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?distro=docker) for
> step-by-step guidance on update paths.## π Links
Here are the links used by this repository:
- [GitLab Omnibus Docker Files](https://gitlab.com/gitlab-org/omnibus-gitlab/-/tree/master/docker)
- [GitLab CE Versions](https://packages.gitlab.com/gitlab/gitlab-ce)
- [GitLab EE Versions](https://packages.gitlab.com/gitlab/gitlab-ee)
- [DockerHub Gitlab CE](https://hub.docker.com/r/gitlab/gitlab-ce)
- [DockerHub Gitlab EE](https://hub.docker.com/r/gitlab/gitlab-ee)## π€ Contribution Guidelines
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:
1. 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.
2. You retain ownership of your contribution, but grant us the rights necessary to use it without restriction.
3. Your contribution does not violate the rights of any third party.### How to Sign the CLA
Before submitting a pull request, please sign the CLA using the following link:
[Sign the CLA](https://cla-assistant.io/feskol/gitlab-arm64)Contributions cannot be merged unless the CLA is signed.
Thank you for your contributions and for helping us build something great!
## π§ͺ Testing
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](https://bashunit.typeddevs.com/) 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.#### Command:
To run the tests, run:
```bash
# 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.
```bash
docker compose run --rm test ../lib/bashunit --verbose ./unit
```#### Structure:
```
...
βββ 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
```## β€οΈ Support This Project
If you find this project helpful and would like to support my work:
- π **Star the repository** to show your appreciation.
- πΈ **Donate via**:
- Buy Me a Coffe: [![Buy Me A Coffee][support-badge-buy-me-coffee]][support-buy-me-coffee]
- PayPal: [![PayPal][support-badge-paypal-me]][support-paypal-me]Thank you for your support!