GitLab ist ein Open-Source-Repository-Manager, der auf Rails basiert und von GitLab Inc. entwickelt wurde. Es ist ein webbasierter Git-Repository-Manager, mit dem Ihr Team beim Codieren, Testen und Bereitstellen von Anwendungen zusammenarbeiten kann. GitLab bietet mehrere Funktionen, darunter Wikis, Problemverfolgung, Codeüberprüfungen und Aktivitätsfeeds.
In diesem Tutorial zeigen wir Ihnen, wie Sie GitLab mit Docker und Docker Compose installieren. Außerdem werden wir Ubuntu 20.04 als unser primäres Betriebssystem verwenden und Docker aus dem offiziellen Ubuntu FocalFossa-Repository installieren.
Voraussetzungen
- Ubuntu-Server 20.04
- Mindestens 4 GB RAM
- Root-Rechte
Was werden wir tun?
- Installieren Sie Docker und Docker Compose
- GitLab-Docker-Projekt einrichten
- Erstellen Sie einen GitLab-Container
- GitLab-Postinstallation
Schritt 1 – Docker und Docker Compose installieren
Zuerst werden wir die Pakete docker und docker-compose auf unserem Ubuntu 20.04-System installieren. Und wir werden die Docker-Pakete verwenden, die vom offiziellen Ubuntu FocalFossa-Repository bereitgestellt werden.
Aktualisieren Sie alle Repositories auf die neueste Version und installieren Sie docker und docker-compose mit dem folgenden apt-Befehl.
sudo apt update
sudo apt install docker.io containerd docker-compose
Sobald die gesamte Installation abgeschlossen ist, starten Sie den Docker-Dienst und fügen Sie ihn zum Systemstart hinzu.
systemctl start docker
systemctl enable docker
Überprüfen Sie als Nächstes den Docker-Dienst mit dem folgenden systemctl-Befehl.
systemctl status docker
Als Ergebnis läuft der Docker-Dienst auf Ubuntu 20.04 Server.
Um die Docker-Installation zu überprüfen, führen Sie den folgenden Docker-Befehl „hello-world“ aus.
docker run hello-world
Jetzt erhalten Sie die „Hello-World“-Nachricht von Docker wie unten gezeigt.
Jetzt können wir GitLab mit Docker Container und Docker-Compose installieren.
Schritt 2 - GitLab-Verzeichnis einrichten
In diesem Schritt richten wir unser Projektverzeichnis für die GitLab-Installation ein.
Erstellen Sie ein neues Verzeichnis namens „gitlab“ und gehen Sie hinein.
mkdir -p gitlab; cd gitlab/
Das „gitlab“-Verzeichnis wird verwendet, um alle Docker-Skripte und Konfigurationen für GitLab zu speichern.
Erstellen Sie ein GitLab-Datenverzeichnis und eine .env-Datei
In diesem Abschnitt erstellen wir ein neues Verzeichnis zum Speichern all unserer GitLab-Daten und erstellen eine neue „.env“-Datei, die von Docker verwendet wird.
Erstellen Sie ein neues GitLab-Datenverzeichnis „/srv/gitlab“ mit dem folgenden mkdir-Befehl.
mkdir -p /srv/gitlab/{config/ssl,logs,data}
Erstellen Sie als Nächstes im Projektverzeichnis „gitlab“ eine neue „.env“-Datei mit dem vim-Editor.
vim .env
Definieren Sie die Umgebungsvariable "GITLAB_HOME" mit dem Wert als GitLab-Datenverzeichnis "/srv/gitlab" wie unten.
GITLAB_HOME=/srv/gitlab
Speichern und schließen.
Das Skript docker-compose.yml verwendet die Umgebungsvariable für Gitlab-Volumes.
Docker-compose.yml-Skript erstellen
Als Nächstes erstellen wir eine neue „docker-compose.yml“, die zum Erstellen unseres GitLab-Containers verwendet wird.
Erstellen Sie die neue Datei „docker-compose.yml“ mit dem folgenden vim-Befehl.
vim docker-compose.yml
Definieren Sie den Dienst namens „web“ mit dem Image der neuesten Version von „gitlab-ce“ und ändern Sie den „hostname“ mit Ihrem GitLab-Domänennamen.
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.hakase-labs.io'
Konfigurieren Sie die Umgebung für Ihre Gitlab-Installation wie unten beschrieben. Und stellen Sie sicher, dass Sie die „external_url“ mit dem sicheren HTTPS-Protokoll und „gitlab_rails['gitlab_shell_ssh_port']“ mit Ihrem alternativen SSH-Port für den Container ändern.
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.hakase-labs.io'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"
Definieren Sie als Nächstes Ports für den GitLab-Container wie unten beschrieben. Und stellen Sie sicher, dass Sie den SSH-Port „2224“ mit Ihrem benutzerdefinierten Port ändern und mit dem Port „gitlab_shell_ssh_port“ oben abgleichen.
ports:
- '80:80'
- '443:443'
- '2224:22'
Definieren Sie danach das Volume oder Ihre GitLab-Datenverzeichnisse. Alle GitLab-Datenverzeichnisse sind im Verzeichnis „GITLAB_HOME“ verfügbar, das die Umgebungsvariable in der „.env“-Datei oben setzt.
volumes:
- '${GITLAB_HOME}/config:/etc/gitlab'
- '${GITLAB_HOME}/logs:/var/log/gitlab'
- '${GITLAB_HOME}/data:/var/opt/gitlab'
- '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'
Speichern und schließen.
Nachfolgend finden Sie die vollständige Konfiguration.
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.hakase-labs.io'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.hakase-labs.io'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"
ports:
- '80:80'
- '443:443'
- '2224:22'
volumes:
- '${GITLAB_HOME}/config:/etc/gitlab'
- '${GITLAB_HOME}/logs:/var/log/gitlab'
- '${GITLAB_HOME}/data:/var/opt/gitlab'
- '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'
Als Ergebnis wurde das Skript „docker-compose.yml“ für die Installation des GitLab-Projekts erstellt.
SSL- und DHAPARAM-Zertifikate generieren
In dieser Phase generieren wir das SSL Letsencrypt für unsere GitLab-Installation.
Installieren Sie auf Ihrem Server das certbot-Tool mit dem folgenden apt-Befehl.
sudo apt install certbot
Generieren Sie danach das SSL-Zertifikat für GitLab mit dem Befehl certbot unten.
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d gitlab.hakase-labs.io
Sobald alles abgeschlossen ist, sind Ihre Zertifikate im Verzeichnis „/etc/letsencrypt/live/gitlab.yourdomain“ verfügbar.
Kopieren Sie nun die Zertifikatsdatei „fullchain.pem“ und „privkey.pem“ in das Verzeichnis „/srv/gitlab/config/ssl/“.
cp /etc/letsencrypt/live/gitlab.hakase-labs.io/fullchain.pem /srv/gitlab/config/ssl/
cp /etc/letsencrypt/live/gitlab.hakase-labs.io/privkey.pem /srv/gitlab/config/ssl/
Und das SSL Letsencrypt für GitLab ist fertig.
Generieren Sie als Nächstes das DHPARAM-Zertifikat „dhparam.pem“ mit dem folgenden openssl-Befehl.
sudo openssl dhparam -out /srv/gitlab/config/ssl/dhparams.pem 2048
Und alle Zertifikate für die GitLab-Installation wurden generiert, und wir sind bereit, den GitLab-Container zu erstellen.
Schritt 3 – Erstellen Sie den GitLab-Container
In diesem Schritt erstellen wir unseren GitLab-Container mit der gesamten Konfiguration, die wir oben erstellt haben, und mit dem Befehl docker-compose.
Bevor Sie fortfahren, können Sie alle verfügbaren Dateien im Projektverzeichnis „gitlab“ und in der Verzeichnisstruktur des GitLab Data-Verzeichnisses überprüfen.
ls -lah ~/gitlab/
tree /srv/gitlab
Unten sehen Sie das Ergebnis, das Sie erhalten.
Wechseln Sie als Nächstes in das Projektverzeichnis „~/gitlab“ und erstellen Sie den GitLab-Container mit dem Befehl „docker-compose“ weiter unten.
cd ~/gitlab
docker-compose up -d
Sobald alles abgeschlossen ist, erhalten Sie das Ergebnis wie unten.
Überprüfen Sie nun den laufenden Container und die "LISTEN"-Ports auf Ihrem Ubuntu-System mit dem folgenden Befehl.
docker-compose ps
ss -plnt
Und Sie erhalten den Container "gitlab_web_1 " läuft und Sie haben den HTTP-, HTTPS- und SSH-Port "2224", der vom GitLab-Container verwendet wird.
Wie Sie sehen können, ist der GitLab-Container in Betrieb und wir sind bereit, unsere GitLab-Installation einzurichten.
Schritt 4 – GitLab-Nachinstallation
Öffnen Sie Ihren Webbrowser und geben Sie Ihre GitLab-URL-Installation in die Adressleiste ein.
https://gitlab.hakase-labs.io/
Und Sie erhalten die GitLab-Seite zum Zurücksetzen des Passworts.
Geben Sie Ihr neues Passwort für den Standardbenutzer „root“ ein und klicken Sie auf die Schaltfläche „Passwort ändern“.
Jetzt erhalten Sie die GitLab-Anmeldeseite wie unten.
Melden Sie sich mit dem Standardbenutzer "root" an " und Ihr neues Passwort, und klicken Sie dann auf "Anmelden".
Und Sie erhalten das GitLab-Dashboard wie folgt.
Wie zu sehen ist, ist die GitLab-Installation mit Docker und Docker-Compose abgeschlossen.
Schritt 5 – Grundlegende Konfiguration des GitLab-Containers
Nach der GitLab-Installation können Sie dem GitLab-Container zusätzliche Konfigurationen hinzufügen, ohne den GitLab-Container zu zerstören. Für diesen Schritt zeigen wir Ihnen die grundlegende Art und Weise, den GitLab-Container zu verwalten.
Bevor Sie fortfahren, gehen Sie in das Projektverzeichnis „~/gitlab“ und überprüfen Sie den Containerstatus mit dem folgenden Befehl.
cd ~/gitlab
docker-compose ps
Sie erhalten, dass der GitLab-Container betriebsbereit ist.
Überprüfen Sie den GitLab-Dienststatus im Container
Um alle GitLab-Dienste im Gitlab-Container zu überprüfen, verwenden Sie den Befehl „docker exec“ wie unten beschrieben.
sudo docker exec -it gitlab_web_1 gitlab-ctl status
Unten sehen Sie das Ergebnis, das Sie erhalten.
Wie zu sehen ist, sind alle GitLab-Dienstkomponenten in Betrieb.
Zugriff auf GitLab-Container
Um per SSH zum GitLab-Container zu gelangen, verwenden Sie „docker exec“ mit der „bash“-Shell innerhalb des Containers wie unten gezeigt.
sudo docker exec -it gitlab_web_1 /bin/bash
Überprüfen Sie nun die Standard-Ubuntu-Version des GitLab-Containers.
cat /etc/lsb-release
Sie erhalten den GitLab-Container basierend auf einem Ubuntu 16.04 Xenial.
Geben Sie nun "exit" ein ", um sich vom GitLab-Container abzumelden.
Bearbeiten Sie die GitLab-Konfiguration gitlab.rb
Um die GitLab-Konfiguration innerhalb des Containers zu ändern, können Sie als Nächstes den standardmäßigen „Editor“ im Docker-Container selbst verwenden.
Bearbeiten Sie die „/etc/gitlab/gitlab.rb“-Konfiguration innerhalb des Containers mit dem Docker-Befehl unten.
sudo docker exec -it gitlab_web_1 editor /etc/gitlab/gitlab.rb
Jetzt erhalten Sie den standardmäßigen „nano“-Editor mit der Konfigurationsdatei „gitlab.rb“ auf dem Bildschirm.
Geben Sie Ihre Konfiguration ein, speichern Sie sie und verlassen Sie sie.
Um die neuen Änderungen auf GitLab anzuwenden, starten Sie als Nächstes den Gitlab-Containerdienst mit dem folgenden Befehl neu.
sudo docker restart gitlab_web_1
Stellen Sie nun sicher, dass kein Fehler vorliegt, überprüfen Sie den Status des GitLab-Containers mit dem folgenden Befehl.
sudo docker-compose ps
Stellen Sie nun sicher, dass sich der GitLab-Cotainer auf "Up (healty)" befindet " Zustand.
Als Ergebnis wurde die neue Konfiguration für GitLab angewendet.
Und schließlich ist die Installation von GitLab mit Docker und Docker-Compose erfolgreich abgeschlossen.