Tagliche GitLab-Sicherung, wenn es in Docker lauft
Erfahre, wie du dein Docker GitLab-Backup automatisierst. Du solltest ein Backup fur die Sicherheit deines Repositories erstellen. Lass uns den Prozess automatisieren...

Ich verwende GitLab in Docker (weil ich Containerisierung liebe) und ich bin wirklich zufrieden damit, weil ich die GitLab-Umgebung uberall hin mitnehmen kann, wenn es notig ist, und ich mich elastischer fuhle, wenn ich Docker verwende.
GitLab-Backups sind wirklich sehr wichtig, weil du den gesamten Quellcode und vielleicht Wiki, vielleicht mehr als den gesamten Quellcode aufbewahrst, und Backup ist das Erste, wenn du einen Dienst auf kritischem Niveau betreibst.
Vergewissere dich uber deinen Docker Run-Befehl
Ich fuhre mein GitLab in Docker mit diesem Befehlssatz aus:
[ercan@gitlab ~]$ docker run --detach \
--hostname gitlab.ercanermis.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latestZunachst mussen wir herausfinden, wie der Docker-Container-Name von GitLab lautet. In meinem Setup verwende ich GitLab Community Edition und habe dem Docker den Namen "gitlab" gegeben. Wenn du den Namen deines GitLab-Docker-Containers nicht kennst, gibt es einen einfachen Weg, ihn herauszufinden.
[ercan@gitlab ~]$ docker ps -a | grep gitlab-ceDie letzte Spalte zeigt den Docker-Container-Namen. Hier ist die Ausgabe:
9c787206fbda gitlab/gitlab-ce:latest "/assets/wrapper" 8 hours ago Up 8 hours (healthy) 0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp gitlabEin Backup erstellen und den Backup-Pfad kennen
Eigentlich ist das GitLab-Backup wirklich einfach. Hier ist der Befehl zum Auslosen des Backup-Mechanismus von GitLab.
docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlabDer Auslosebefehl reicht nicht aus, weil du ein Backup der Dateien gitlab.rb und gitlab-secrets.json machen solltest, die sich im Pfad /srv/gitlab/config/ befinden. Ich bevorzuge es, diese Dateien (mit dem cp-Befehl) in den Pfad /srv/gitlab/data/backups/ zu kopieren, weil gitlab-rake in dasselbe Verzeichnis exportiert.
Mein GitLab Docker Backup Bash-Skript sieht so aus:
#!/bin/bash
#Author: Ercan Ermis - https://ercanermis.com
docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlab
cp /srv/gitlab/config/gitlab.rb /srv/gitlab/data/backups/$(date +%F_%H-%M)gitlab.rb
cp /srv/gitlab/config/gitlab-secrets.json /srv/gitlab/data/backups/$(date +%F%H-%M)_gitlab-secrets.json
Welche Dateien hast du nach der Ausfuhrung des Backup-Bash?
Gitlab generiert den Backup-Dateinamen wie 1600262658_2020_09_16_13.3.6_gitlab_backup.tar. Das bedeutet epochtime_jahr_monat_tag_gitlabVersion_gitlab_backup.tar. Deshalb verwende ich die $date-Funktion beim Kopieren von gitlab.rb und gitlab-secrets.json in den Ordner /srv/gitlab/data/backups/.
Ich verwende den AWS S3-Dienst, um meine Backups sicher und redundant aufzubewahren. Wenn das Backup abgeschlossen und im Ordner /srv/gitlab/data/backups/ bereit ist, synchronisiere ich die gesicherten Dateien mit S3 mit dem Befehl aws s3 sync /srv/gitlab/data/backups/ s3://ercanermis-backup/gitlab/ und losche die Backup-Datei auf dem Server.
Du kannst auch deine eigene Losung verwenden, um dein Backup redundant und sicher aufzubewahren, wie SMB, sFTP oder eine andere Block-Storage-Losung von einem anderen Anbieter.
Final: Lass uns das Backup automatisieren
Hier ist das finale Bash-Skript zur Automatisierung des GitLab Docker-Backups, gespeichert in /opt/gitlab-backup.sh
#!/bin/bash
#Author: Ercan Ermis - https://ercanermis.com
docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlab
cp /srv/gitlab/config/gitlab.rb /srv/gitlab/data/backups/$(date +%F_%H-%M)gitlab.rb
cp /srv/gitlab/config/gitlab-secrets.json /srv/gitlab/data/backups/$(date +%F%H-%M)_gitlab-secrets.json
aws s3 sync /srv/gitlab/data/backups/ s3://ercanermis-backup/gitlab/ && rm -rf /srv/gitlab/data/backups/*
Nachdem du deine .sh-Datei erstellt hast, kannst du deinen crontab verwenden, um dein eigenes /opt/gitlab-backup.sh auszulosen.
Weiteres von Ercan
Zwei weitere Seiten, gleicher Autor, anderes Terrain.
KI, LLMs, Agents, angewandte ML.
Praxisnotizen zu KI-Workloads. Bedrock-Kostenanalyse, Agent-Patterns, Vektorspeicher-Tradeoffs, Failure-Modes in Produktion.
Besuchen ercan.ai →Die Drehscheibe. Über mich, Beratung, Kontakt.
Persönliche Drehscheibe für beide Schreibspuren. Wer ich bin, wie die Beratung funktioniert, wie Sie mich erreichen.
Besuchen ercanermis.com →