Hamnarbetare

Ställ in en Git HTTP-server på Docker

Ställ in en Git HTTP-server på Docker
Git HTTP-server är mycket användbar för personer som vill arbeta och samarbeta i projekt privat. I den här artikeln ska jag visa dig hur du ställer in en HTTP-tillgänglig Git-server med Docker Compose.  Så, låt oss komma igång.

Krav:

För att följa den här artikeln måste du ha Docker installerat på din dator. LinuxHint har många artiklar som du kan följa för att installera Docker på din önskade Linux-distribution om du inte redan har den installerad. Så se till att kolla LinuxHint.com om du har problem med att installera Docker.

Installera Docker Compose:

Du kan ladda ner Docker Compose binär fil mycket enkelt med följande kommando:

$ 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

NOTERA: ringla kanske inte installeras på din Linux-distribution. Om så är fallet kan du installera curl med följande kommando:

Ubuntu / Debian / Linux Mint:

$ sudo apt install curl -y

CentOS / RHEL / Fedora:

$ sudo dnf installera curl -y

En gång docker-compose binär fil laddas ner, kör följande kommando:

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

Kontrollera nu om docker-compose kommandot fungerar enligt följande:

$ docker-compose-version

Den ska skriva ut versionsinformationen som visas på skärmdumpen nedan.

Konfigurera Docker Compose för projektet:

Skapa nu en projektkatalog ~ / docker / gitserver (låt oss säga) och a repor / och etc/ katalog i projektkatalogen för att hålla git-arkiv och vissa konfigurationsfiler.

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

Navigera nu till projektkatalogen ~ / docker / gitserver som följer:

$ cd ~ / docker / gitserver

Så här ska projektträdet se ut. Här har jag två filer, git.konf och git-create-repo.sh i etc/ katalog. En tom repor / katalog för att hålla alla Git-arkiv. A gitserver.Dockerfil för att bygga en anpassad Git HTTP-server Docker-behållare och en docker-compose.yaml fil.

Innehållet i gitserver.Dockerfil:

FRÅN ubuntu: 18.04
KÖR apt-uppdatering 2> / dev / null
KÖR apt-installation -y git apache2 apache2-utils 2> / dev / null
KÖR a2enmod env cgi alias omskrivning
KÖR mkdir / var / www / git
KÖR chown -Rfv www-data: www-data / var / www / git
KOPIERA ./ etc / git.conf / etc / apache2 / sites-available / git.konf
KOPIERA ./ etc / git-create-repo.sh / usr / bin / mkrepo
KÖR chmod + x / usr / bin / mkrepo
KÖR a2dissite 000-standard.konf
KÖR a2ensite git.konf
KÖR git config --system http.mottagarpaket sant
KÖR git config --system http.uploadpack true
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 FOREGROUND
EXPONERA 80 / tcp

Innehållet i etc / git.konf Apache-konfigurationsfil:


ServerAdmin webbansvarig @ 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
 

Alternativ + ExecCGI -MultiViews + SymLinksIfOwnerMatch
AllowOverride None
Kräv alla beviljade

 
DocumentRoot / var / www / html
 

Alternativ Index FollowSymLinks MultiViews
AllowOverride None
Kräv alla beviljade

ErrorLog $ APACHE_LOG_DIR / fel.logga
LogLevel varnar
CustomLog $ APACHE_LOG_DIR / åtkomst.logg kombinerad

Innehållet i etc / git-create-repo.sh Skalskript:

#!/ 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
tryck på git-daemon-export-ok
cp krokar / efter uppdatering.provkrokar / efter uppdatering
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
ekot "Git-arkivet" $ REPO_NAME "skapat i $ GIT_DIR / $ REPO_NAME.git "

Slutligen, innehållet i docker-compose.yaml fil:

version: "3.7 "
tjänster:
git-server:
bygga:
dockerfile: gitserver.Dockerfil
sammanhang: .
starta om: alltid
hamnar:
- "8080: 80"
volymer:
- ./ repos: / var / www / git

Building Git HTTP Server Docker Image:

Kör följande kommando för att bygga Git HTTP Server-dockeravbildningen:

$ docker-compose-byggnad

Det kan ta en stund att bygga en anpassad Docker-avbildning.

Vid denna punkt ska Docker-avbildningen byggas.

Närhelst du gör några ändringar i någon av gitserver.Dockerfil, etc / git.konf, etc / git-create-repo.sh måste du bygga om Docker-avbildningen med docker-compose-byggnad kommando.

Starta Git HTTP-server:

Nu, för att starta git-server tjänst, kör följande kommando:

$ docker-compose up -d

De git-server tjänsten bör börja i bakgrunden.

För att se hur portarna mappas, kör följande kommando:

$ docker-compose ps

Som du kan se, för git-server tjänst, Docker-värdporten 8080 mappas till behållarens TCP-port 80.

Skapa nytt Git-arkiv på servern:

Att skapa ett nytt Git-arkiv testa (låt oss säga) på Git HTTP-serverbehållaren, kör följande kommando:

$ docker-compose exec git-server mkrepo test

Ett nytt Git-arkiv testa bör skapas.

Hitta IP-adressen till Docker Host:

Om du vill komma åt Git HTTP-servern från andra datorer i ditt nätverk måste du känna IP-adressen till din Docker-värd.

För att hitta IP-adressen till din Docker-värd, kör följande kommando:

$ ip

I mitt fall IP-adressen till min Docker-värd 192.168.20.160. Det kommer att vara annorlunda för dig. Så se till att ersätta den med din från och med nu.

Åtkomst till Git-arkiv från servern:

Du kan komma åt Git-förvaren på servern med URL: n http: //: 8080 /.git

Här,

är IP-adressen till din Docker-värd.

är Git-förvarets namn i Git HTTP-servern.

Så i mitt fall för testa förvar, webbadressen ska vara http: // 192.168.20.160: 8080 / test.git

Nu kan du klona test Git-arkivet från servern enligt följande:

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

Som du kan se klonas förvaret framgångsrikt. Men det är för närvarande tomt.

En ny katalog testa/ bör skapas.

$ ls

Navigera till testa/ katalog.

$ cd test /

Gör nu några ändringar och gör det.

$ echo "välkommen till git-server"> meddelande.Text
$ git add -A
$ git commit -m 'initial commit'
$ git log - online

Tryck nu på ändringarna på servern enligt följande:

$ git push origin master

Som du ser skickas åtagandena till Git HTTP-servern framgångsrikt.

Nu kan någon annan också klona test Git-arkivet.

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

Navigera till testa/ katalog.

$ cd test /

Och hitta förändringarna där.

Stoppa Git HTTP-servern:

För att stoppa git-server tjänst, kör följande kommando:

$ docker-komponerar ner

De git-server tjänsten bör stoppas.

Så det är så du ställer in en Git HTTP-server med Docker. Tack för att du läste den här artikeln.

Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...