Docker

Configurer un serveur HTTP Git sur Docker

Configurer un serveur HTTP Git sur Docker
Le serveur HTTP Git est très utile pour les personnes qui souhaitent travailler et collaborer sur des projets en privé. Dans cet article, je vais vous montrer comment configurer un serveur Git accessible HTTP à l'aide de Docker Compose.  Alors, commençons.

Conditions:

Pour suivre cet article, vous devez avoir installé Docker sur votre ordinateur. LinuxHint contient de nombreux articles que vous pouvez suivre pour installer Docker sur la distribution Linux de votre choix si vous ne l'avez pas déjà installé. Alors, assurez-vous de vérifier LinuxHint.com au cas où vous rencontrez des problèmes pour installer Docker.

Installation de Docker Compose :

Vous pouvez télécharger le fichier binaire Docker Compose très facilement avec la commande suivante :

$ 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

REMARQUE: boucle peut ne pas être installé sur votre distribution Linux. Si tel est le cas, vous pouvez installer curl avec la commande suivante :

Ubuntu/Debian/Linux Mint :

$ sudo apt install curl -y

CentOS/RHEL/Fedora :

$ sudo dnf install curl -y

Une fois que docker-composer binaire est téléchargé, exécutez la commande suivante :

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

Maintenant, vérifiez si docker-composer la commande fonctionne comme suit :

$ docker-compose version

Il devrait imprimer les informations de version comme indiqué dans la capture d'écran ci-dessous.

Configuration de Docker Compose pour le projet :

Maintenant, créez un répertoire de projet ~/docker/gitserver (disons) et un repos/ et etc/ répertoire dans le répertoire du projet pour conserver les référentiels git et certains fichiers de configuration.

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

Maintenant, accédez au répertoire du projet ~/docker/gitserver comme suit:

$ cd ~/docker/gitserver

Voici à quoi devrait ressembler l'arborescence du projet. Ici, j'ai 2 fichiers, git.conf et git-create-repo.sh dans le etc/ annuaire. Un vide repos/ répertoire pour conserver tous les dépôts Git. UNE gitserver.Dockerfile pour créer un conteneur Docker de serveur HTTP Git personnalisé et un docker-composer.yaml déposer.

Le contenu du gitserver.Dockerfile:

DE Ubuntu:18.04
RUN apt update 2>/dev/null
RUN apt install -y git apache2 apache2-utils 2>/dev/null
RUN a2enmod env cgi alias réécrire
EXÉCUTER mkdir /var/www/git
RUN chown -Rfv www-data:www-data /var/www/git
COPIE ./etc/git.conf /etc/apache2/sites-available/git.conf
COPIE ./etc/git-create-repo.sh /usr/bin/mkrepo
RUN chmod +x /usr/bin/mkrepo
RUN a2dissite 000-default.conf
EXÉCUTER a2ensite git.conf
RUN git config --system http.recevoir le paquet vrai
RUN git config --system http.uploadpack vrai
ENV APACHE_RUN_USER www-données
ENV APACHE_RUN_GROUP www-données
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 PREMIER PLAN
EXPOSE 80/tcp

Le contenu de etc/git.conf Fichier de configuration Apache :


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

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride Aucun
Exiger tout accordé

 
RacineDocument /var/www/html
 

Options Index FollowSymLinks MultiViews
AllowOverride Aucun
Exiger tout accordé

ErrorLog $APACHE_LOG_DIR/erreur.Journal
LogLevel avertir
CustomLog $APACHE_LOG_DIR/accès.journal combiné

Le contenu du etc/git-create-repo.sh Script shell :

#!/bin/bash
 
GIT_DIR="/var/www/git"
REPO_NAME=$1
 
mkdir -p "$GIT_DIR/$REPO_NAME.idiot"
cd "$GIT_DIR/$REPO_NAME.idiot"
 
git init --bare &> /dev/null
touchez git-daemon-export-ok
crochets cp/post-mise à jour.exemples de crochets/post-mise à jour
git update-server-info
chown -Rf www-data:www-data "$GIT_DIR/$REPO_NAME.idiot"
echo "Référentiel Git '$REPO_NAME' créé dans $GIT_DIR/$REPO_NAME.idiot"

Enfin, le contenu du docker-composer.yaml déposer:

version : "3.7"
prestations de service:
git-serveur :
construire:
fichier docker : gitserver.Dockerfile
le contexte: .
redémarrer : toujours
ports :
- "8080:80"
tomes :
- ./repos:/var/www/git

Création de l'image Docker du serveur HTTP Git :

Maintenant, pour créer l'image docker du serveur HTTP Git, exécutez la commande suivante :

$ docker-compose build

La création d'une image Docker personnalisée peut prendre un certain temps.

À ce stade, l'image Docker doit être construite.

Chaque fois que vous apportez des modifications à l'un des gitserver.Dockerfile, etc/git.conf, etc/git-create-repo.sh fichier, vous devez reconstruire l'image Docker en utilisant docker-compose build commander.

Démarrage du serveur HTTP Git :

Maintenant, pour commencer le git-serveur service, exécutez la commande suivante :

$ docker-compose up -d

le git-serveur le service doit démarrer en arrière-plan.

Pour voir comment les ports sont mappés, exécutez la commande suivante :

$ docker-composer ps

Comme vous pouvez le voir, pour le git-serveur service, le port hôte Docker 8080 est mappé sur le port TCP du conteneur 80.

Création d'un nouveau référentiel Git sur le serveur :

Pour créer un nouveau dépôt Git test (disons) sur le conteneur du serveur HTTP Git, exécutez la commande suivante :

$ docker-compose exec git-server mkrepo test

Un nouveau dépôt Git test devrait être créé.

Trouver l'adresse IP de l'hôte Docker :

Si vous souhaitez accéder au serveur HTTP Git depuis d'autres ordinateurs de votre réseau, vous devez connaître l'adresse IP de votre hôte Docker.

Pour trouver l'adresse IP de votre hôte Docker, exécutez la commande suivante :

$ ip

Dans mon cas, l'adresse IP de mon hôte Docker 192.168.20.160. Ce sera différent pour toi. Alors, assurez-vous de le remplacer par le vôtre à partir de maintenant.

Accéder aux référentiels Git depuis le serveur :

Vous pouvez accéder aux dépôts Git sur le serveur en utilisant l'URL http://:8080/.git

Ici,

est l'adresse IP de votre hôte Docker.

est le nom du référentiel Git dans le serveur HTTP Git.

Donc, dans mon cas, pour le test référentiel, l'URL doit être http://192.168.20.160:8080/test.git

Maintenant, vous pouvez cloner le référentiel Git de test à partir du serveur comme suit :

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

Comme vous pouvez le voir, le référentiel est cloné avec succès. Mais il est actuellement vide.

Un nouvel annuaire test/ devrait être créé.

$ ls

Naviguez vers le test/ annuaire.

$ cd test/

Maintenant, apportez quelques modifications et validez.

$ echo "bienvenue sur git-server" > message.SMS
$ git ajouter -A
$ git commit -m 'validation initiale'
$ git log --oneline

Maintenant, transférez les modifications sur le serveur comme suit :

$ git push origin master

Comme vous pouvez le voir, les commits sont envoyés avec succès au serveur HTTP Git.

Maintenant, quelqu'un d'autre peut également cloner le référentiel Git de test.

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

Naviguez vers le test/ annuaire.

$ cd test/

Et y trouver les changements.

Arrêt du serveur HTTP Git :

Pour arrêter le git-serveur service, exécutez la commande suivante :

$ docker-composer vers le bas

le git-serveur le service doit être arrêté.

C'est ainsi que vous configurez un serveur HTTP Git à l'aide de Docker. Merci d'avoir lu cet article.

Le bouton de clic gauche de la souris ne fonctionne pas sous Windows 10
Si vous utilisez une souris dédiée avec votre ordinateur portable ou de bureau mais que le le clic gauche de la souris ne fonctionne pas sur Windows 1...
Le curseur saute ou se déplace de manière aléatoire lors de la saisie dans Windows 10
Si vous constatez que le curseur de votre souris saute ou se déplace tout seul, automatiquement, au hasard lors de la saisie sur un ordinateur portabl...
Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...