Docker

Einrichten eines Git-HTTP-Servers auf Docker

Einrichten eines Git-HTTP-Servers auf Docker
Der Git HTTP-Server ist sehr nützlich für Leute, die privat an Projekten arbeiten und zusammenarbeiten möchten. In diesem Artikel zeige ich Ihnen, wie Sie mit Docker Compose einen HTTP-zugänglichen Git-Server einrichten.  Also lasst uns anfangen.

Bedarf:

Um diesem Artikel folgen zu können, muss Docker auf Ihrem Computer installiert sein. LinuxHint hat viele Artikel, denen Sie folgen können, um Docker auf Ihrer gewünschten Linux-Distribution zu installieren, wenn Sie es noch nicht installiert haben. Überprüfen Sie also unbedingt LinuxHint.com, falls Sie Probleme bei der Installation von Docker haben.

Docker Compose installieren:

Sie können die Docker Compose-Binärdatei sehr einfach mit dem folgenden Befehl herunterladen:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/
docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

HINWEIS: Locken ist möglicherweise nicht auf Ihrer Linux-Distribution installiert. In diesem Fall können Sie curl mit dem folgenden Befehl installieren:

Ubuntu/Debian/Linux Mint:

$ sudo apt install curl -y

CentOS/RHEL/Fedora:

$ sudo dnf install curl -y

Einmal docker-compose Binärdatei heruntergeladen wird, führen Sie den folgenden Befehl aus:

$ sudo chmod +x /usr/local/bin/docker-compose

Prüfen Sie nun, ob docker-compose Befehl funktioniert wie folgt:

$ docker-compose-Version

Es sollte die Versionsinformationen wie im Screenshot unten gezeigt drucken.

Docker Compose für das Projekt einrichten:

Erstellen Sie nun ein Projektverzeichnis ~/docker/gitserver (sagen wir) und a lager/ und usw/ Verzeichnis innerhalb des Projektverzeichnisses zum Aufbewahren der Git-Repositorys und einiger Konfigurationsdateien.

$ mkdir -p ~/docker/gitserver/repos,etc

Navigieren Sie nun zum Projektverzeichnis ~/docker/gitserver wie folgt:

$ cd ~/docker/gitserver

So sollte der Projektbaum aussehen. Hier habe ich 2 Dateien, git.conf und git-create-repo.Sch in dem usw/ Verzeichnis. Ein leeres lager/ Verzeichnis zum Aufbewahren aller Git-Repositorys. EIN gitserver.Dockerfile zum Erstellen eines benutzerdefinierten Git-HTTP-Server-Docker-Containers und a docker-compose.yaml Datei.

Der Inhalt der gitserver.Dockerfile:

VON Ubuntu: 18.04
FÜHREN Sie apt update 2>/dev/null
RUN apt install -y git apache2 apache2-utils 2>/dev/null
RUN a2enmod env cgi alias rewrite
RUN mkdir /var/www/git
RUN chown -Rfv www-data:www-data /var/www/git
KOPIEREN ./etc/git.conf /etc/apache2/sites-available/git.conf
KOPIEREN ./etc/git-create-repo.sh /usr/bin/mkrepo
RUN chmod +x /usr/bin/mkrepo
RUN a2dissite 000-default.conf
RUN a2ensite git.conf
RUN git config --system http --.Empfangspaket wahr
RUN git config --system httpsystem.Uploadpack wahr
ENV APACHE_RUN_USER www-daten
ENV APACHE_RUN_GROUP www-daten
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
CMD /usr/sbin/apache2ctl -D FOREGROUND
AUSSETZEN 80/tcp

Die Inhalte von etc/git.conf Apache-Konfigurationsdatei:


ServerAdmin webmaster@localhost
 
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias ​​/ /usr/lib/git-core/git-http-backend/
 
Alias ​​/ /var/www/git
 

Optionen +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride None
Fordern Sie alle gewährten

 
DocumentRoot /var/www/html
 

Optionen Indizes FollowSymLinks MultiViews
AllowOverride None
Fordern Sie alle gewährten

ErrorLog $APACHE_LOG_DIR/Fehler.Log
LogLevel-Warnung
CustomLog $APACHE_LOG_DIR/Zugriff.Protokoll kombiniert

Der Inhalt der etc/git-create-repo.Sch Shell-Skript:

#!/bin/bash
 
GIT_DIR="/var/www/git"
REPO_NAME=$1
 
mkdir -p "$GIT_DIR/$REPO_NAME.Scheiße"
cd "$GIT_DIR/$REPO_NAME.Scheiße"
 
git init --bare &> /dev/null
touch git-daemon-export-ok
cp-Hooks/Post-Update.Beispiel-Hooks/Post-Update
git update-server-info
chown -Rf www-data:www-data "$GIT_DIR/$REPO_NAME.Scheiße"
echo "Git-Repository '$REPO_NAME' erstellt in $GIT_DIR/$REPO_NAME.Scheiße"

Schließlich ist der Inhalt der docker-compose.yaml Datei:

Version: "3.7"
Dienstleistungen:
Git-Server:
bauen:
dockerfile: gitserver.Dockerfile
Kontext: .
Neustart: immer
Häfen:
- "8080:80"
Bände:
- ./repos:/var/www/git

Erstellen von Git HTTP Server Docker-Image:

Führen Sie nun den folgenden Befehl aus, um das Docker-Image für Git HTTP Server zu erstellen:

$ docker-compose build

Es kann eine Weile dauern, ein benutzerdefiniertes Docker-Image zu erstellen.

An dieser Stelle sollte das Docker-Image erstellt werden.

Wann immer Sie Änderungen an einem der gitserver.Dockerfile, etc/git.conf, etc/git-create-repo.Sch Datei müssen Sie das Docker-Image neu erstellen mitbuild Docker-Compose-Build Befehl.

Git HTTP-Server starten:

Nun, um die zu starten Git-Server service, führen Sie den folgenden Befehl aus:

$ docker-compose up -d

Das Git-Server Dienst sollte im Hintergrund starten.

Führen Sie den folgenden Befehl aus, um zu sehen, wie die Ports zugeordnet sind:

$ docker-compose ps

Wie Sie sehen können, für die Git-Server service, der Docker-Host-Port 8080 wird dem Container-TCP-Port zugeordnet 80.

Neues Git-Repository auf dem Server erstellen:

So erstellen Sie ein neues Git-Repository Prüfung (sagen wir) auf dem Git-HTTP-Server-Container den folgenden Befehl ausführen:

$ docker-compose exec git-server mkrepo test

Ein neues Git-Repository Prüfung sollte erstellt werden.

Ermitteln der IP-Adresse des Docker-Hosts:

Wenn Sie von anderen Computern in Ihrem Netzwerk auf den Git-HTTP-Server zugreifen möchten, müssen Sie die IP-Adresse Ihres Docker-Hosts kennen.

Führen Sie den folgenden Befehl aus, um die IP-Adresse Ihres Docker-Hosts zu ermitteln:

$ ip

In meinem Fall die IP-Adresse meines Docker-Hosts 192.168.20.160. Bei dir wird es anders sein. Stellen Sie also sicher, dass Sie es von nun an durch Ihres ersetzen.

Zugriff auf Git-Repositorys vom Server aus:

Sie können über die URL http:// auf die Git-Repositorys auf dem Server zugreifen:8080/.git

Hier,

ist die IP-Adresse Ihres Docker-Hosts.

ist der Git-Repository-Name im Git-HTTP-Server.

Also in meinem Fall für die Prüfung Repository sollte die URL http://192 . lauten.168.20.160:8080/test.git

Jetzt können Sie das Test-Git-Repository wie folgt vom Server klonen:

$ git-Klon http://192.168.20.160:8080/test.git

Wie Sie sehen, wurde das Repository erfolgreich geklont. Aber derzeit ist es leer.

Ein neues Verzeichnis Prüfung/ sollte erstellt werden.

$ ls

Navigieren Sie zum Prüfung/ Verzeichnis.

$ CD-Test/

Nehmen Sie nun einige Änderungen vor und übergeben Sie es.

$ echo "Willkommen beim Git-Server" > Nachricht.TXT
$ git add -A
$ git commit -m 'erster Commit'
$ git log --oneline

Übertragen Sie nun die Änderungen wie folgt auf den Server:

$ git push origin master

Wie Sie sehen, werden die Commits erfolgreich an den Git-HTTP-Server gesendet.

Jetzt kann auch jemand anderes das Test-Git-Repository klonen.

$ git-Klon http://192.168.20.160:8080/test.git

Navigieren Sie zum Prüfung/ Verzeichnis.

$ CD-Test/

Und finde die Änderungen dort.

Stoppen des Git-HTTP-Servers:

Um das zu stoppen Git-Server service, führen Sie den folgenden Befehl aus:

$ docker-compose down

Das Git-Server Dienst sollte eingestellt werden.

So richten Sie mit Docker einen Git-HTTP-Server ein. Danke, dass du diesen Artikel gelesen hast.

Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...
Unity3D-Tutorial
Einführung in Unity 3D Unity 3D ist eine leistungsstarke Engine für die Spieleentwicklung. Es ist plattformübergreifend, das heißt, Sie können Spiele ...