Requisiti:
Per seguire questo articolo, devi avere Docker installato sul tuo computer. LinuxHint ha molti articoli che puoi seguire per installare Docker sulla tua distribuzione Linux desiderata se non lo hai già installato. Quindi, assicurati di controllare LinuxHint.com in caso di problemi con l'installazione di Docker.
Installazione di Docker Compose:
Puoi scaricare il file binario Docker Compose molto facilmente con il seguente comando:
$ 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
NOTA: arricciare potrebbe non essere installato sulla tua distribuzione Linux. In tal caso, puoi installare curl con il seguente comando:
Ubuntu/Debian/Linux Mint:
$ sudo apt install curl -yCentOS/RHEL/Fedora:
$ sudo dnf install curl -yUna volta docker-comporre file binario viene scaricato, eseguire il seguente comando:
$ sudo chmod +x /usr/local/bin/docker-compose
Ora, controlla se docker-comporre comando funziona come segue:
$ versione docker-composeDovrebbe stampare le informazioni sulla versione come mostrato nello screenshot qui sotto.
Configurazione di Docker Compose per il progetto:
Ora crea una directory di progetto ~/docker/gitserver (diciamo) e a repo/ e eccetera/ directory all'interno della directory del progetto per conservare i repository git e alcuni file di configurazione.
$ mkdir -p ~/docker/gitserver/repos,etc
Ora vai alla directory del progetto ~/docker/gitserver come segue:
$ cd ~/docker/gitserver
Ecco come dovrebbe essere l'albero del progetto. Ecco, ho 2 file, idiota.conf e git-create-repo.sh nel eccetera/ directory. Un vuoto repo/ directory per conservare tutti i repository Git. UN gitserver.Dockerfile per la creazione di un container Docker del server HTTP Git personalizzato e a docker-comporre.igname file.
Il contenuto del gitserver.Dockerfile:
DA ubuntu: 18.04ESEGUI apt update 2>/dev/null
ESEGUI apt install -y git apache2 apache2-utils 2>/dev/null
ESEGUI a2enmod env cgi alias rewrite
ESEGUI mkdir /var/www/git
RUN chown -Rfv www-data:www-data /var/www/git
COPIA ./etc/git.conf /etc/apache2/sites-available/git.conf
COPIA ./etc/git-create-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.ricezionepacchetto 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/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
CMD /usr/sbin/apache2ctl -D IN PRIMO PIANO
ESPOSI 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
ScriptAlias / /usr/lib/git-core/git-http-backend/
Alias / /var/www/git
Opzioni +ExecCGI -MultiViews +SymLinksIfOwnerMatch
ConsentiSovrascrivi Nessuno
Richiedi tutto concesso
DocumentRoot /var/www/html
Opzioni Indici FollowSymLinks MultiViews
ConsentiSovrascrivi Nessuno
Richiedi tutto concesso
ErrorLog $APACHE_LOG_DIR/error.log
Avvertimento livello log
CustomLog $APACHE_LOG_DIR/accesso.log combinato
Il contenuto del etc/git-create-repo.sh Script di shell:
#!/bin/bashGIT_DIR="/var/www/git"
REPO_NAME=$1
mkdir -p "$GIT_DIR/$REPO_NAME.idiota"
cd "$GIT_DIR/$REPO_NAME.idiota"
git init --bare &> /dev/null
tocca git-daemon-export-ok
cp hook/post-aggiornamento.esempi di hook/post-aggiornamento
git update-server-info
chown -Rf www-data:www-data "$GIT_DIR/$REPO_NAME.idiota"
echo "Repository Git '$REPO_NAME' creato in $GIT_DIR/$REPO_NAME.idiota"
Infine, il contenuto del docker-comporre.igname file:
versione: "3.7"Servizi:
git-server:
costruire:
dockerfile: gitserver.Dockerfile
contesto: .
riavvia: sempre
porti:
- "8080:80"
volumi:
- ./repos:/var/www/git
Creazione dell'immagine Docker del server HTTP Git:
Ora, per creare l'immagine docker di Git HTTP Server, esegui 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 creata.
Ogni volta che apporti modifiche a uno qualsiasi dei gitserver.Dockerfile, ecc/git.conf, etc/git-create-repo.sh file, è necessario ricostruire l'immagine Docker utilizzando build docker-compose comando.
Avvio del server HTTP Git:
Ora, per iniziare il git-server servizio, eseguire il seguente comando:
$ docker-compose up -d
Il git-server il servizio dovrebbe avviarsi in background.
Per vedere come sono mappate le porte, eseguire il comando seguente:
$ docker-compose psCome 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 Git HTTP, esegui il seguente comando:
$ docker-compose exec git-server mkrepo test
Un nuovo repository Git test dovrebbe essere creato.
Trovare l'indirizzo IP dell'host Docker:
Se desideri accedere al server Git HTTP da altri computer della tua rete, devi conoscere l'indirizzo IP del tuo host Docker.
Per trovare l'indirizzo IP del tuo host Docker, esegui il seguente comando:
$ ipNel mio caso, l'indirizzo IP del mio host Docker 192.168.20.160. Sarà diverso per te. Quindi, assicurati di sostituirlo con il tuo d'ora in poi.
Accesso ai repository Git dal server:
Puoi accedere ai repository Git sul server usando l'URL http://
Qui,
Quindi, nel mio caso, per il test repository, l'URL dovrebbe essere http://192.168.20.160:8080/prova.idiota
Ora puoi clonare il repository Git di prova dal server come segue:
$ git clone http://192.168.20.160:8080/prova.idiota
Come puoi vedere, il repository è stato clonato con successo. Ma al momento è vuoto.
Una nuova directory test/ dovrebbe essere creato.
$ ls
Vai a test/ directory.
$ cd prova/
Ora, apporta alcune modifiche e confermalo.
$ echo "benvenuto su git-server" > messaggio.TXT$ git add -A
$ git commit -m 'commit iniziale'
$ git log --oneline
Ora, invia le modifiche al server come segue:
$ git push origine master
Come puoi vedere, i commit vengono inviati con successo al server Git HTTP.
Ora anche qualcun altro può clonare il repository Git di prova.
$ git clone http://192.168.20.160:8080/prova.idiota
Vai a test/ directory.
$ cd prova/
E trova i cambiamenti lì.
Arresto del server HTTP Git:
Per fermare il git-server servizio, eseguire il seguente comando:
$ docker-componi giù
Il git-server il servizio dovrebbe essere interrotto.
Quindi, è così che configuri un server HTTP Git usando Docker. Grazie per aver letto questo articolo.