Configure un servidor GIT HTTP en Docker

Configure un servidor GIT HTTP en Docker
El servidor Git HTTP es muy útil para las personas que desean trabajar y colaborar en proyectos en privado. En este artículo, le mostraré cómo configurar un servidor GIT accesible HTTP usando Docker Compose. Entonces empecemos.

Requisitos:

Para seguir este artículo, debe tener instalado Docker en su computadora. Linuxhint tiene muchos artículos que puede seguir para instalar Docker en su distribución de Linux deseada si aún no lo tiene instalado. Entonces, asegúrese de verificar Linuxhint.com en caso de que tenga problemas para instalar Docker.

Instalación de Docker Compose:

Puede descargar el archivo binario Docker Compose muy fácilmente con el siguiente comando:

$ sudo curl -l "https: // github.com/docker/compose/comunes/descargar/1.24.1/
Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/docker-composa

NOTA: rizo No se puede instalar en su distribución de Linux. Si ese es el caso, puede instalar Curl con el siguiente comando:

Ubuntu/Debian/Linux Mint:

$ sudo apt instalación curl -y

Centos/Rhel/Fedora:

$ sudo dnf instalación curl -y

Una vez compuesto de acopolador El archivo binario se descarga, ejecute el siguiente comando:

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

Ahora, verifique si compuesto de acopolador El comando está funcionando de la siguiente manera:

$ Docker-Compose Version

Debe imprimir la información de la versión como se muestra en la captura de pantalla a continuación.

Configuración de Docker Compose para el proyecto:

Ahora, cree un directorio de proyecto ~/Docker/Gitserver (Digamos) y un Repos/ y etc/ Directorio dentro del directorio del proyecto para mantener los repositorios GIT y algunos archivos de configuración.

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

Ahora, navegue al directorio del proyecto ~/Docker/Gitserver como sigue:

$ CD ~/Docker/Gitserver

Así es como debería verse el árbol del proyecto. Aquí tengo 2 archivos, git.confusión y git-create-repo.mierda en el etc/ directorio. Un vacío Repos/ Directorio para mantener todos los repositorios GIT. A gitserver.Dockfile para construir un contenedor de Docker de servidor HTTP HTTP personalizado y un compuesto de acopolador.yaml archivo.

El contenido del gitserver.Dockfile:

De Ubuntu: 18.04
Ejecutar Apt Update 2>/dev/null
Ejecutar apt install -y git apache2 apache2 -utils 2>/dev/null
Ejecutar A2enMod Env CGI Alias ​​Rewrite
Ejecutar mkdir/var/www/git
Ejecutar chown -rfv www-data: www-data/var/www/git
COPIAR ./etc/git.conf/etc/apache2/sites disponible/git.confusión
COPIAR ./etc/git-create-repo.sh/usr/bin/mkrepo
Ejecutar chmod +x/usr/bin/mkrepo
Ejecutar A2Dissite 000 default.confusión
Ejecutar a2ensite git.confusión
Ejecutar la configuración git --system http.Recibepack verdadero
Ejecutar la configuración git --system http.Suboadpack verdadero
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 PARAJE
Exponer 80/TCP

Los contenidos de etc/git.confusión Archivo de configuración de 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

Opciones +ExecCGI -Multiviews +Symlinksifownermatch
Permitirse
Requiere todos otorgados

Documentroot/var/www/html

Índices de opciones SIGUSYSYMLINKS MULTIVIEWS
Permitirse
Requiere todos otorgados

ErrorLog $ apache_log_dir/error.registro
Advertencia de Loglevel
CustomLog $ apache_log_dir/access.registro combinado

El contenido del etc/git-create-repo.mierda Script de shell:

#!/bin/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
toque git-daemon-export-ok
CP Hooks/Post-Update.Ganchos de muestra/post-actualización
Git Update-Server-Info
chown -rf www-data: www-data "$ git_dir/$ repo_name.git "
echo "Git Repository '$ Repo_name' creado en $ git_dir/$ repo_name.git "

Finalmente, el contenido del compuesto de acopolador.yaml archivo:

Versión: "3.7 "
servicios:
Git-server:
construir:
Dockerfile: Gitserver.Dockfile
contexto: .
reiniciar: siempre
Puertos:
- "8080: 80"
Volúmenes:
- ./repos:/var/www/git

Creación de la imagen del servidor HTTP HTTP:

Ahora, para construir la imagen de Docker del servidor HTTP HTTP, ejecute el siguiente comando:

$ Docker-Compose Build

Puede tomar un tiempo construir una imagen de Docker personalizada.

En este punto, la imagen de Docker debe construirse.

Siempre que realice algún cambio en cualquiera de los gitserver.Dockfile, etc/git.confusión, etc/git-create-repo.mierda Archivo, debe reconstruir la imagen de Docker usando Docker-Compose Build dominio.

Iniciar servidor Git HTTP:

Ahora, para comenzar el servidor de git Servicio, ejecute el siguiente comando:

$ Docker -Compose Up -d

El servidor de git El servicio debe comenzar en segundo plano.

Para ver cómo se asignan los puertos, ejecute el siguiente comando:

$ Docker-Compose PS

Como puede ver, para el servidor de git Servicio, el puerto de anfitrión Docker 8080 se asigna al puerto TCP del contenedor 80.

Creación de un nuevo repositorio de git en el servidor:

Para crear un nuevo repositorio de git prueba (Digamos) En el contenedor de servidor HTTP HTTP, ejecute el siguiente comando:

Prueba de $ Docker-Compose Exec Git-Server MKREPO

Un nuevo repositorio de git prueba debe crearse.

Encontrar la dirección IP del host de Docker:

Si desea acceder al servidor GIT HTTP desde otras computadoras en su red, debe conocer la dirección IP de su host de Docker.

Para encontrar la dirección IP de su host de Docker, ejecute el siguiente comando:

$ IP

En mi caso, la dirección IP de mi host de Docker 192.168.20.160. Será diferente para ti. Entonces, asegúrese de reemplazarlo con el tuyo de ahora en adelante.

Acceder a los repositorios Git desde el servidor:

Puede acceder a los repositorios GIT en el servidor utilizando la URL http: //: 8080/.git

Aquí,

es la dirección IP de su host de Docker.

es el nombre del repositorio de git en el servidor git http.

Entonces, en mi caso, para el prueba Repositorio, la URL debe ser http: // 192.168.20.160: 8080/prueba.git

Ahora, puede clonar el repositorio de prueba Git del servidor de la siguiente manera:

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

Como puede ver, el repositorio está clonado con éxito. Pero actualmente está vacío.

Un nuevo directorio prueba/ debe crearse.

$ LS

Navegar al prueba/ directorio.

Prueba de $ CD/

Ahora, haga algunos cambios y comprométalo.

$ echo "Bienvenido a git-server"> mensaje.TXT
$ git add -a
$ git commit -m 'commit inicial'
$ git log -enneline

Ahora, presione los cambios al servidor de la siguiente manera:

$ git push origin maestro

Como puede ver, los compromisos se envían al servidor GIT HTTP correctamente.

Ahora, alguien más puede clonar el repositorio de prueba git también.

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

Navegar al prueba/ directorio.

Prueba de $ CD/

Y encuentra los cambios allí.

Detener el servidor GIT HTTP:

Para detener el servidor de git Servicio, ejecute el siguiente comando:

$ Docker-Compose Down

El servidor de git El servicio debe detenerse.

Entonces, así es como configuras un servidor GIT HTTP usando Docker. Gracias por leer este artículo.