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.