Docker

Een Git HTTP-server instellen op Docker

Een Git HTTP-server instellen op Docker
Git HTTP-server is erg handig voor mensen die privé willen werken en samenwerken aan projecten. In dit artikel laat ik je zien hoe je een HTTP-toegankelijke Git-server opzet met Docker Compose.  Dus laten we beginnen.

Vereisten:

Om dit artikel te kunnen volgen, moet Docker op uw computer zijn geïnstalleerd. LinuxHint heeft veel artikelen die je kunt volgen om Docker op je gewenste Linux-distributie te installeren als je het nog niet hebt geïnstalleerd. Controleer dus zeker LinuxHint.com voor het geval je problemen hebt met het installeren van Docker.

Docker Compose installeren:

U kunt het binaire bestand Docker Compose heel eenvoudig downloaden met de volgende opdracht:

$ 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

OPMERKING: krullen is mogelijk niet geïnstalleerd op uw Linux-distributie. Als dat het geval is, kun je curl installeren met de volgende opdracht:

Ubuntu/Debian/Linux Mint:

$ sudo apt install curl -y

CentOS/RHEL/Fedora:

$ sudo dnf install curl -y

Een keer docker-compose binair bestand is gedownload, voert u de volgende opdracht uit:

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

Controleer nu of docker-compose commando werkt als volgt:

$ docker-compose-versie

Het zou de versie-informatie moeten afdrukken zoals weergegeven in de onderstaande schermafbeelding.

Docker Compose instellen voor het project:

Maak nu een projectdirectory aan ~/docker/gitserver (laten we zeggen) en een repo's/ en enz/ directory in de projectdirectory voor het bewaren van de git-repository's en enkele configuratiebestanden.

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

Navigeer nu naar de projectdirectory ~/docker/gitserver als volgt:

$ cd ~/docker/gitserver

Zo zou de projectboom eruit moeten zien. Hier heb ik 2 bestanden, git.conf en git-create-repo.sh in de enz/ map. Een lege repo's/ directory voor het bewaren van alle Git-repositories. EEN gitserver.Dockerbestand voor het bouwen van een aangepaste Git HTTP-server Docker-container en a docker-compose.yaml het dossier.

De inhoud van de gitserver.Dockerbestand:

VAN ubuntu:18.04
UITVOEREN apt update 2>/dev/null
RUN apt install -y git apache2 apache2-utils 2>/dev/null
RUN a2enmod env cgi alias herschrijven
RUN mkdir /var/www/git
RUN chown -Rfv www-data:www-data /var/www/git
KOPIËREN ./etc/git.conf /etc/apache2/sites-available/git.conf
KOPIËREN ./etc/git-create-repo.sh /usr/bin/mkrepo
RUN chmod +x /usr/bin/mkrepo
RUN a2dissite 000-standaard.conf
VOER a2ensite git uit.conf
RUN git config --system http.ontvangstpakket waar
RUN git config --system http.uploadpack waar
ENV APACHE_RUN_USER www-gegevens
ENV APACHE_RUN_GROUP www-gegevens
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 VOORGROND
BLOOT 80/tcp

de inhoud van etc/git.conf Apache-configuratiebestand:


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
 

Opties +ExecCGI -MultiViews +SymLinksIfOwnerMatch
ToestaanOverschrijven Geen
Vereisen dat alles is verleend

 
DocumentRoot /var/www/html
 

Opties Indexen FollowSymLinks MultiViews
ToestaanOverschrijven Geen
Vereisen dat alles is verleend

ErrorLog $APACHE_LOG_DIR/error.log
LogLevel waarschuwing
CustomLog $APACHE_LOG_DIR/toegang.log gecombineerd

De inhoud van de etc/git-create-repo.sh Shell-script:

#!/bin/bash
 
GIT_DIR="/var/www/git"
REPO_NAME=$1
 
mkdir -p "$GIT_DIR/$REPO_NAME.git"
cd "$GIT_DIR/$REPO_NAME.git"
 
git init --bare &> /dev/null
touch git-daemon-export-ok
cp hooks/post-update.voorbeeldhaken/post-update
git update-server-info
chown -Rf www-data:www-data "$GIT_DIR/$REPO_NAME.git"
echo "Git-repository '$REPO_NAME' gemaakt in $GIT_DIR/$REPO_NAME.git"

Tot slot de inhoud van de docker-compose.yaml het dossier:

versie: "3.7"
Diensten:
git-server:
bouwen:
dockerbestand: gitserver.Dockerbestand
context: .
herstart: altijd
poorten:
- "8080:80"
volumes:
- ./repos:/var/www/git/

Git HTTP Server Docker-afbeelding bouwen:

Voer nu de volgende opdracht uit om de Git HTTP Server-docker-image te bouwen:

$ docker-compose build

Het kan even duren om een ​​aangepaste Docker-image te maken.

Op dit punt moet de Docker-afbeelding worden gebouwd.

Telkens wanneer u wijzigingen aanbrengt in een van de gitserver.Dockerbestand, etc/git.conf, etc/git-create-repo.sh bestand, moet u de Docker-image opnieuw opbouwen met docker-compose build opdracht.

Git HTTP-server starten:

Nu, om te beginnen met de git-server service, voer de volgende opdracht uit:

$ docker-compose up -d

De git-server service zou op de achtergrond moeten beginnen.

Voer de volgende opdracht uit om te zien hoe de poorten zijn toegewezen:

$ docker-compose ps

Zoals je kunt zien, voor de git-server service, de Docker-hostpoort 8080 is toegewezen aan de container-TCP-poort 80.

Nieuwe Git-repository maken op de server:

Een nieuwe Git-repository maken test (laten we zeggen) voer op de Git HTTP-servercontainer de volgende opdracht uit:

$ docker-compose exec git-server mkrepo-test

Een nieuwe Git-repository test moet worden gemaakt.

Het IP-adres van Docker Host vinden:

Als u toegang wilt tot de Git HTTP-server vanaf andere computers in uw netwerk, moet u het IP-adres van uw Docker-host weten.

Voer de volgende opdracht uit om het IP-adres van uw Docker-host te vinden:

$ ip

In mijn geval het IP-adres van mijn Docker-host 192.168.20.160. Het zal voor jou anders zijn. Dus zorg ervoor dat je het vanaf nu vervangt door de jouwe.

Toegang tot Git-opslagplaatsen vanaf de server:

U kunt toegang krijgen tot de Git-repositories op de server met behulp van de URL http://:8080/.git

Hier,

is het IP-adres van uw Docker Host.

is de Git-repositorynaam in de Git HTTP-server.

Dus, in mijn geval, voor de test repository, de URL moet http://192 . zijn.168.20.160:8080/test.git

Nu kun je de test Git-repository als volgt van de server klonen:

$ git kloon http://192.168.20.160:8080/test.git

Zoals je kunt zien, is de repository met succes gekloond. Maar het is momenteel leeg.

Een nieuwe map test/ moet worden gemaakt.

$ ls

Navigeer naar de test/ map.

$ cd-test/

Breng nu enkele wijzigingen aan en bevestig het.

$ echo "welkom bij git-server" > bericht.tekst
$ git add -A
$ git commit -m 'initiële commit'
$ git log --oneline

Duw de wijzigingen nu als volgt naar de server:

$ git push origin master

Zoals je kunt zien, worden de commits met succes naar de Git HTTP-server verzonden.

Nu kan iemand anders de test Git-repository ook klonen.

$ git kloon http://192.168.20.160:8080/test.git

Navigeer naar de test/ map.

$ cd-test/

En vind de veranderingen daar.

De Git HTTP-server stoppen:

Om de . te stoppen git-server service, voer de volgende opdracht uit:

$ docker-compose down

De git-server service moet worden gestopt.

Dus zo stel je een Git HTTP-server in met Docker. Bedankt voor het lezen van dit artikel.

OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...