Sett opp en Git HTTP -server på Docker

Sett opp en Git HTTP -server på Docker
Git HTTP -server er veldig nyttig for folk som vil jobbe og samarbeide om prosjekter privat. I denne artikkelen skal jeg vise deg hvordan du setter opp en HTTP -tilgjengelig Git -server ved hjelp av Docker Compose. Så la oss komme i gang.

Krav:

For å følge denne artikkelen, må du ha Docker installert på datamaskinen din. Linuxhint har mange artikler som du kan følge for å installere Docker på ønsket Linux -distribusjon hvis du ikke har den installert allerede. Så husk å sjekke Linuxhint.com i tilfelle du har problemer med å installere docker.

Installere Docker Compose:

Du kan laste ned Docker Compose Binary File veldig enkelt med følgende kommando:

$ sudo curl -l "https: // github.com/docker/kompose/utgivelser/nedlasting/1.24.1/
Docker-Compose-$ (Uname -s)-$ (Uname -m) "-o/usr/local/bin/docker-compose

MERK: krøll kan ikke installeres på Linux -distribusjonen din. Hvis det er tilfelle, kan du installere Curl med følgende kommando:

Ubuntu/Debian/Linux Mint:

$ sudo apt install curl -y

Centos/RHEL/Fedora:

$ sudo dnf install curl -y

En gang Docker-Compose Binærfil lastes ned, kjør følgende kommando:

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

Nå, sjekk om Docker-Compose Kommandoen fungerer som følger:

$ Docker-Compose-versjon

Den skal skrive ut versjonsinformasjonen som vist på skjermdumpen nedenfor.

Sette opp Docker -komponering for prosjektet:

Lag nå en prosjektkatalog ~/docker/gitserver (La oss si) og en repos/ og etc/ Katalog i prosjektkatalogen for å holde Git -lagringene og noen konfigurasjonsfiler.

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

Naviger nå til prosjektkatalogen ~/docker/gitserver følgende:

$ cd ~/docker/gitserver

Slik skal prosjekttreet se ut. Her har jeg 2 filer, git.konf og git-create-repo.sh i etc/ katalog. En tom repos/ Katalog for å beholde alle Git -lagringene. EN Gitserver.Dockerfile For å bygge en tilpasset Git http server docker container og en Docker-Compose.Yaml fil.

Innholdet i Gitserver.Dockerfile:

Fra Ubuntu: 18.04
Kjør apt oppdatering 2>/dev/null
Kjør Apt Install -y Git Apache2 Apache2 -UTILS 2>/dev/null
Kjør a2enmod env CGI alias omskrives
Kjør mkdir/var/www/git
Kjør Chown -RFV www-data: www-data/var/www/git
KOPIERE ./etc/git.Conf/etc/apache2/nettsteder-tilgjengelig/git.konf
KOPIERE ./etc/git-create-repo.sh/usr/bin/mkrepo
Kjør ChMod +X/usr/bin/mkrepo
Kjør a2dissite 000-default.konf
Kjør a2ensite git.konf
Kjør Git Config -System HTTP.motta Pack True
Kjør Git Config -System HTTP.Last opp pakke
Env apache_run_user www-data
Env apache_run_group www-data
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 forgrunnen
Eksponer 80/TCP

Innholdet i etc/git.konf Apache -konfigurasjonsfil:


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

Alternativer +execcgi -multiViews +symlinksifoWreMatch
Tillat ingen
Krever alt gitt

Documentroot/var/www/html

Alternativerindekser følger Symlinks Multiviews
Tillat ingen
Krever alt gitt

Errorlog $ apache_log_dir/feil.Logg
LogLevel advarer
CustomLog $ apache_log_dir/tilgang.logg kombinert

Innholdet i etc/git-create-repo.sh Shell -skript:

#!/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 - -fair &> /dev /null
Touch git-daemon-export-ok
CP-kroker/post-oppdatering.Eksempelkroker/post-oppdatering
git oppdateringsserver-info
Chown -rf www-data: www-data "$ git_dir/$ repo_name.Git "
Echo "Git Repository '$ repo_name' opprettet i $ git_dir/$ repo_name.Git "

Endelig innholdet i Docker-Compose.Yaml fil:

Versjon: "3.7 "
tjenester:
git-server:
bygge:
DockerFile: Gitserver.Dockerfile
kontekst: .
Start på nytt: Alltid
Porter:
- "8080: 80"
Volum:
- ./repos:/var/www/git

Bygning Git HTTP Server Docker Image:

Nå, for å bygge Git HTTP Server Docker -bildet, kjør følgende kommando:

$ Docker-Compose Build

Det kan ta en stund å bygge et tilpasset Docker -bilde.

På dette tidspunktet skal Docker -bildet bygges.

Når du gjør endringer i noen av Gitserver.Dockerfile, etc/git.konf, etc/git-create-repo.sh fil, du må gjenoppbygge Docker -bildet ved hjelp av Docker-Compose Build kommando.

Start Git HTTP -server:

Nå, for å starte git-server Tjeneste, kjør følgende kommando:

$ docker -compose up -d

De git-server Tjenesten skal starte i bakgrunnen.

For å se hvordan portene er kartlagt, kjør følgende kommando:

$ Docker-Compose Ps

Som du kan se, for git-server Service, Docker Host Port 8080 er kartlagt til containeren TCP -port 80.

Opprette nytt Git -depot på serveren:

For å lage et nytt Git -depot test (La oss si) På GIT HTTP -serverbeholderen, kjør følgende kommando:

$ Docker-Compose Exec Git-Server Mkrepo Test

Et nytt git -depot test bør opprettes.

Finne IP -adressen til Docker -vert:

Hvis du vil få tilgang til GIT HTTP -serveren fra andre datamaskiner i nettverket ditt, må du kjenne IP -adressen til Docker -verten din.

For å finne IP -adressen til Docker -verten din, kjør følgende kommando:

$ ip

I mitt tilfelle er IP -adressen til Docker -verten min 192.168.20.160. Det vil være annerledes for deg. Så sørg for å erstatte den med din fra nå av.

Få tilgang til Git -lagringsplasser fra serveren:

Du kan få tilgang til GIT -lagringene på serveren ved å bruke URL http: //: 8080/.git

Her,

er IP -adressen til Docker -verten din.

er Git -depotnavnet i Git HTTP -serveren.

Så i mitt tilfelle, for test depot, URLen skal være http: // 192.168.20.160: 8080/test.git

Nå kan du klone Test Git -depotet fra serveren som følger:

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

Som du ser er depotet klonet med hell. Men det er for øyeblikket tomt.

En ny katalog test/ bør opprettes.

$ ls

Naviger til test/ katalog.

$ CD -test/

Nå, gjør noen endringer og begår det.

$ ekko "Velkommen til Git-Server"> Melding.tekst
$ git add -a
$ git commit -m 'initial commit'
$ git log --oneline

Nå, skyv endringene til serveren som følger:

$ git push origin master

Som du ser blir forpliktelsene sendt til Git HTTP -serveren med hell.

Nå kan noen andre klone også testen Git -depotet.

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

Naviger til test/ katalog.

$ CD -test/

Og finn endringene der.

Stopper Git HTTP -serveren:

Å stoppe git-server Tjeneste, kjør følgende kommando:

$ Docker-Compose Down

De git-server Tjenesten skal stoppes.

Så det er slik du setter opp en Git HTTP -server ved hjelp av Docker. Takk for at du leste denne artikkelen.