Configurez un serveur HTTP GIT sur Docker

Configurez un serveur HTTP GIT sur Docker
Le serveur GIT HTTP 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.

Exigences:

Afin de suivre cet article, vous devez faire installer Docker sur votre ordinateur. Linuxhint a beaucoup d'articles que vous pouvez suivre pour installer Docker sur la distribution Linux souhaitée si vous ne l'avez pas déjà installé. Alors, assurez-vous de vérifier Linuxhint.com au cas où vous auriez du mal à installer Docker.

Installation de Docker Compose:

Vous pouvez télécharger très facilement Docker Compose Binary File 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

NOTE: boucle ne peut 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 installer curl -y

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

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

Maintenant, vérifiez si composer docker 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 à l'intérieur du 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

C'est à quoi devrait ressembler l'arbre de projet. Ici, j'ai 2 fichiers, git.confli et git-create-repo.shot dans le etc/ annuaire. Un vide REPOS / Répertoire pour conserver tous les référentiels Git. UN sert.Dockerfile pour construire un conteneur Docker Git HTTP Server personnalisé et un composer docker.yaml déposer.

Le contenu du sert.Dockerfile:

De Ubuntu: 18.04
Exécutez la mise à jour APT 2> / dev / null
Exécutez apt install -y git apache2 apache2-utils 2> / dev / null
Exécuter A2enmod Env CGI Alias ​​Rewrite
Exécutez MKDIR / VAR / WWW / GIT
Exécutez Chown -rfv www-data: www-data / var / www / git
COPIE ./ etc / git.conf / etc / apache2 / sites-disponible / git.confli
COPIE ./ etc / git-créate-repo.sh / usr / bin / mkrepo
Exécutez Chmod + X / USR / BIN / MKREPO
Exécutez A2Dissite 000-Default.confli
Exécuter A2ensite Git.confli
Exécuter Git Config - System http.reçoire-toi vrai
Exécuter 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.piquer
CMD / USR / SBIN / APACHE2CTL -D
Exposer 80 / TCP

Le contenu de etc / git.confli Fichier de configuration 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

Options + EXECCGI -MultiViews + SymLinkSifownMatch
Autoverride Aucun
Exiger tous les accords

Documentroot / var / www / html

Les index d'options suivent les multivaleurs multiples
Autoverride Aucun
Exiger tous les accords

ErrorLog $ apache_log_dir / erreur.enregistrer
Loglevel avertit
Customlog $ apache_log_dir / accès.journal combiné

Le contenu du etc / git-créate-repo.shot Script shell:

#!/ bac / 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
toucher git-daemon-export-ok
CP CP / post-mise à jour.Exemples de crochets / post-mise à jour
Git Update-Server-Info
chown -rf www-data: www-data "$ git_dir / $ repo_name.git "
echo "git Repository '$ repo_name' créé dans $ git_dir / $ repo_name.git "

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

Version: "3.7"
prestations de service:
git-server:
construire:
dockerfile: gitserver.Dockerfile
contexte: .
redémarrer: toujours
PORTS:
- "8080: 80"
Volumes:
- ./ repos: / var / www / git

Bâtiment Image Docker du serveur GIT HTTP:

Maintenant, pour créer l'image Docker Git HTTP Server, exécutez la commande suivante:

$ docker-compose build

Cela peut prendre un certain temps pour créer une image Docker personnalisée.

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

Chaque fois que vous apportez des modifications à l'un des sert.Dockerfile, etc / git.confli, etc / git-créate-repo.shot fichier, vous devez reconstruire l'image docker en utilisant build-compose docker commande.

Démarrage du serveur GIT HTTP:

Maintenant, pour démarrer le serveur git Service, exécutez la commande suivante:

$ docker-compose up -d

Le serveur git Le service doit commencer en arrière-plan.

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

$ docker-compose ps

Comme vous pouvez le voir, pour le serveur git Service, le port hôte docker 8080 est mappé au port TCP à conteneur 80.

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

Pour créer un nouveau référentiel GIT test (Disons) sur le conteneur GIT HTTP Server, exécutez la commande suivante:

$ docker-compose exec git-server mkrepo test

Un nouveau référentiel GIT test devrait être créé.

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

Si vous souhaitez accéder au serveur GIT HTTP à partir 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 vous. 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 référentiels GIT sur le serveur à l'aide de 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 GIT HTTP.

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 de test git à 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 c'est actuellement vide.

Un nouveau répertoire test/ devrait être créé.

$ ls

Accédez à la test/ annuaire.

$ cd test /

Maintenant, apportez des modifications et engagez-la.

$ echo "Bienvenue à Git-Server"> Message.SMS
$ git add -a
$ git commit -m 'initial commit'
$ Git Log --Oneline

Maintenant, poussez les modifications au serveur comme suit:

$ git push origin maître

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

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

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

Accédez à la test/ annuaire.

$ cd test /

Et y trouver les changements.

Arrêt du serveur GIT HTTP:

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

$ docker-compose

Le serveur git Le service doit être arrêté.

C'est donc ainsi que vous avez configuré un serveur HTTP GIT à l'aide de Docker. Merci d'avoir lu cet article.