Imposta un server Git HTTP su Docker

Imposta un server Git HTTP su Docker
Il server Git HTTP è molto utile per le persone che vogliono lavorare e collaborare ai progetti privatamente. In questo articolo, ti mostrerò come impostare un server Git accessibile HTTP utilizzando Docker Compose. Quindi iniziamo.

Requisiti:

Per seguire questo articolo, è necessario installare Docker sul tuo computer. Linuxhint ha molti articoli che puoi seguire per installare Docker sulla distribuzione di Linux desiderata se non lo hai già installato. Quindi, assicurati di controllare Linuxhint.com nel caso in cui tu abbia problemi a installare Docker.

Installazione di Docker Compositura:

È possibile scaricare il file binario di Docker Composition molto facilmente con il seguente comando:

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

NOTA: arricciare potrebbe non essere installato sulla distribuzione di Linux. In questo caso, è possibile installare Curl con il seguente comando:

Ubuntu/Debian/Linux Mint:

$ sudo APT Installa Curl -y

CentOS/RHEL/Fedora:

$ sudo dnf installa curl -y

Una volta docker-compose Il file binario viene scaricato, eseguire il seguente comando:

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

Ora, controlla se docker-compose Il comando funziona come segue:

$ Docker-compose versione

Dovrebbe stampare le informazioni sulla versione come mostrato nello screenshot seguente.

Impostazione di Docker Componomy per il progetto:

Ora, crea una directory di progetto ~/docker/gitserver (diciamo) e a repository/ E eccetera/ Directory all'interno della directory del progetto per mantenere i repository GIT e alcuni file di configurazione.

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

Ora, vai alla directory del progetto ~/docker/gitserver come segue:

$ cd ~/docker/gitserver

Ecco come dovrebbe essere l'albero del progetto. Qui, ho 2 file, idiota.conf E git-create-ripo.sh nel eccetera/ directory. Un vuoto repository/ directory per mantenere tutti i repository Git. UN gitserver.Dockerfile Per la costruzione di un contenitore Docker Docker Git HTTP personalizzato e un docker-compose.Yaml file.

Il contenuto del gitserver.Dockerfile:

Da Ubuntu: 18.04
Esegui Apt Update 2>/Dev/Null
Esegui Apt Installa -y Git Apache2 Apache2 -Utils 2>/Dev/Null
Eseguire a2enmod env cgi alias riscrivere
Esegui MKDIR/VAR/WWW/GIT
RUN CHOWN -RFV WWW-DATA: WWW-DATA/VAR/WWW/GIT
COPIA ./etc/git.conf/etc/apache2/siti-disponibile/git.conf
COPIA ./etc/git-creato-repo.sh/usr/bin/mkrepo
Esegui CHMOD +X/USR/Bin/Mkrepo
Esegui A2Dissite 000-Default.conf
Esegui A2ensite git.conf
Esegui Git Config -System HTTP.Ricevipack vero
Esegui Git Config -System HTTP.uploadpack vero
Env apache_run_user www-data
Env apache_run_group www-data
Env apache_log_dir/var/log/apache2
Env apache_lock_dir/var/blocco/apache2
Env apache_pid_file/var/run/apache2.pid
Cmd/usr/sbin/apache2ctl -d in primo piano
Esporre 80/TCP

Il contenuto di ecc/git.conf File di configurazione di Apache:


ServerAdmin Webmaster@localhost
Setenv git_project_root/var/www/git
Setenv git_http_export_all
Scriphalias//usr/lib/git-core/git-http-backend/
Alias ​​/ /var /www /git

Opzioni +Execcgi -Multiviews +SymlinkSifoWownerMatch
Consentire nessuno
Richiedono tutto concesso

DocumentRoot/var/www/html

Opzioni indici di followsymlinks multiview
Consentire nessuno
Richiedono tutto concesso

Errorlog $ apache_log_dir/errore.tronco d'albero
Warn loglevel
CustomLog $ apache_log_dir/access.Registro combinato

Il contenuto del ecc/git-creato-ripo.sh Script di shell:

#!/Bin/Bash
Git_dir = "/var/www/git"
Repo_name = $ 1
mkdir -p "$ git_dir/$ repo_name.idiota"
cd "$ git_dir/$ repo_name.idiota"
git init - -bara &> /dev /null
Touch Git-Daemon-Export-OK
CP hooks/post-aggiornamento.Gancio di esempio/post-aggiornamento
Git Update-Server-Info
chown -rf www-data: www-data "$ git_dir/$ repo_name.idiota"
echo "git repository '$ repo_name' creato in $ git_dir/$ repo_name.idiota"

Infine, il contenuto del docker-compose.Yaml file:

Versione: "3.7 "
Servizi:
Git-Server:
costruire:
Dockerfile: Gitserver.Dockerfile
contesto: .
Riavvia: sempre
Porte:
- "8080: 80"
Volumi:
- ./Repos:/var/www/git

Costruire l'immagine Docker del server HTTP GIT:

Ora, per creare l'immagine Docker del server HTTP GIT, eseguire il seguente comando:

$ Docker-compose build

Potrebbe volerci un po 'di tempo per creare un'immagine Docker personalizzata.

A questo punto, l'immagine Docker dovrebbe essere costruita.

Ogni volta che si apportano modifiche a uno qualsiasi dei gitserver.Dockerfile, ecc/git.conf, ecc/git-creato-ripo.sh file, è necessario ricostruire l'immagine Docker utilizzando build docker-compose comando.

Avvio del server Git HTTP:

Ora, per iniziare il Git-Server Servizio, eseguire il seguente comando:

$ Docker -Opse Up -D

IL Git-Server Il servizio dovrebbe iniziare in background.

Per vedere come sono mappate le porte, eseguire il seguente comando:

$ docker-compose ps

Come puoi vedere, per il Git-Server Servizio, la porta host Docker 8080 è mappato alla porta TCP del contenitore 80.

Creazione di un nuovo repository Git sul server:

Per creare un nuovo repository git test (Diciamo) sul contenitore del server HTTP GIT, esegui il comando seguente:

$ Docker-compose Exec Git-Server Mkrepo Test

Un nuovo repository Git test dovrebbe essere creato.

Trovare l'indirizzo IP dell'host Docker:

Se si desidera accedere al server Git HTTP da altri computer sulla tua rete, è necessario conoscere l'indirizzo IP del tuo host Docker.

Per trovare l'indirizzo IP dell'host Docker, eseguire il seguente comando:

$ ip

Nel mio caso, l'indirizzo IP del mio host Docker 192.168.20.160. Sarà diverso per te. Quindi, assicurati di sostituirlo con il tuo da ora in poi.

Accesso ai repository Git dal server:

È possibile accedere ai repository GIT sul server utilizzando l'URL http: //: 8080/.idiota

Qui,

è l'indirizzo IP del tuo host Docker.

è il nome del repository Git nel server Git HTTP.

Quindi, nel mio caso, per il test repository, l'URL dovrebbe essere http: // 192.168.20.160: 8080/Test.idiota

Ora puoi clonare il repository Git Test dal server come segue:

$ git clone http: // 192.168.20.160: 8080/Test.idiota

Come puoi vedere, il repository è clonato con successo. Ma è attualmente vuoto.

Una nuova directory test/ dovrebbe essere creato.

$ ls

Navigare verso il test/ directory.

$ cd test/

Ora, apporta alcune modifiche e commettilo.

$ echo "benvenuto in git-server"> messaggio.TXT
$ git aggiungi -a
$ git commit -m "commit iniziale"
$ git log --oneline

Ora, spingi le modifiche al server come segue:

$ git Push Origin Master

Come puoi vedere, i commit vengono inviati al server Git HTTP correttamente.

Ora, qualcun altro può clonare anche il repository di test git.

$ git clone http: // 192.168.20.160: 8080/Test.idiota

Navigare verso il test/ directory.

$ cd test/

E trova i cambiamenti lì.

Arrestare il server HTTP GIT:

Per fermare il Git-Server Servizio, eseguire il seguente comando:

$ Docker-compone

IL Git-Server Il servizio dovrebbe essere fermato.

Quindi, è così che hai configurato un server Git HTTP utilizzando Docker. Grazie per aver letto questo articolo.