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 -yCentOS/RHEL/Fedora:
$ sudo dnf install curl -yEen 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-versieHet 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.04UITVOEREN 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/bashGIT_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 psZoals 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:
$ ipIn 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://
Hier,
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.