Estibador

Configurar un servidor HTTP de Git en Docker

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

Requerimientos:

Para seguir este artículo, debe tener Docker instalado en su computadora. LinuxHint tiene muchos artículos que puede seguir para instalar Docker en la distribución de Linux que desee si aún no lo tiene instalado. Por lo tanto, 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 de Docker Compose muy fácilmente con el siguiente 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: rizo puede que no esté instalado en su distribución de Linux. Si ese es el caso, puede instalar curl con el siguiente comando:

Ubuntu / Debian / Linux Mint:

$ sudo apt install curl -y

CentOS / RHEL / Fedora:

$ sudo dnf install curl -y

Una vez docker-compose descargado el archivo binario, ejecute el siguiente comando:

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

Ahora, compruebe si docker-compose El comando funciona de la siguiente manera:

$ docker-compose versión

Debería 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, crea un directorio de proyecto ~ / docker / gitserver (digamos) y un repositorios / y etc / directorio dentro del directorio del proyecto para mantener los repositorios git y algunos archivos de configuración.

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

Ahora, navega hasta el 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.conf y git-create-repo.sh en el etc / directorio. Un vacío repositorios / directorio para mantener todos los repositorios de Git. A gitserver.Dockerfile para crear un contenedor Docker de servidor HTTP de Git personalizado y un docker-compose.yaml expediente.

El contenido del gitserver.Dockerfile:

DESDE ubuntu: 18.04
EJECUTAR apt actualización 2> / dev / null
EJECUTAR apt install -y git apache2 apache2-utils 2> / dev / null
EJECUTAR a2enmod env cgi alias reescribir
EJECUTAR mkdir / var / www / git
EJECUTAR chown -Rfv www-data: www-data / var / www / git
COPIAR ./ etc / git.conf / etc / apache2 / sites-available / git.conf
COPIAR ./ etc / git-create-repo.sh / usr / bin / mkrepo
EJECUTAR chmod + x / usr / bin / mkrepo
EJECUTAR a2dissite 000-predeterminado.conf
EJECUTAR a2ensite git.conf
EJECUTAR git config --system http.recibir paquete verdadero
EJECUTAR git config --system http.uploadpack 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 PRIMER PLANO
EXPONER 80 / tcp

Los contenidos de etc / git.conf 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
AllowOverride Ninguno
Requerir todo concedido

 
DocumentRoot / var / www / html
 

Opciones Índices FollowSymLinks MultiViews
AllowOverride Ninguno
Requerir todo concedido

ErrorLog $ APACHE_LOG_DIR / error.Iniciar sesión
LogLevel advertir
CustomLog $ APACHE_LOG_DIR / acceso.registro combinado

El contenido del etc / git-create-repo.sh Secuencia de comandos 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-actualización.ganchos de muestra / post-actualización
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
echo "El repositorio de Git '$ REPO_NAME' creado en $ GIT_DIR / $ REPO_NAME.git "

Finalmente, el contenido de la docker-compose.yaml expediente:

versión: "3.7 "
servicios:
servidor git:
construir:
dockerfile: gitserver.Dockerfile
contexto: .
reiniciar: siempre
puertos:
- "8080: 80"
volúmenes:
- ./ repos: / var / www / git

Creación de la imagen de Docker del servidor HTTP de Git:

Ahora, para crear la imagen de la ventana acoplable del servidor HTTP de Git, ejecute el siguiente comando:

$ docker-compose compilación

Puede llevar un tiempo crear una imagen de Docker personalizada.

En este punto, la imagen de Docker debería estar construida.

Siempre que realice cambios en cualquiera de los gitserver.Dockerfile, etc / git.conf, etc / git-create-repo.sh archivo, debe reconstruir la imagen de Docker usando compilación de docker-compose mando.

Iniciando el servidor HTTP de Git:

Ahora, para comenzar el servidor git service, ejecute el siguiente comando:

$ docker-compose up -d

La servidor 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 git servicio, el puerto de host de 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 del servidor HTTP de Git, ejecute el siguiente comando:

$ docker-compose exec git-server mkrepo prueba

Un nuevo repositorio de Git prueba debe ser creado.

Encontrar la dirección IP del host de Docker:

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

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

$ ip

En mi caso, la dirección IP de mi host Docker 192.168.20.160. Será diferente para ti. Por lo tanto, asegúrese de reemplazarlo por el suyo a partir de ahora.

Accediendo a los repositorios de Git desde el servidor:

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

Aquí,

es la dirección IP de su Docker Host.

es el nombre del repositorio de Git en el servidor HTTP de Git.

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 de Git desde el servidor de la siguiente manera:

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

Como puede ver, el repositorio se clonó correctamente. Pero actualmente está vacío.

Un nuevo directorio prueba/ debe ser creado.

$ ls

Navega al prueba/ directorio.

$ cd prueba /

Ahora, haz algunos cambios y confírmelo.

$ echo "bienvenido a git-server"> mensaje.TXT
$ git add -A
$ git commit -m 'compromiso inicial'
$ git log --en línea

Ahora, envíe los cambios al servidor de la siguiente manera:

$ git push origin master

Como puede ver, las confirmaciones se envían al servidor HTTP de Git con éxito.

Ahora, otra persona también puede clonar el repositorio de prueba de Git.

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

Navega al prueba/ directorio.

$ cd prueba /

Y encuentra los cambios allí.

Deteniendo el servidor HTTP de Git:

Para detener el servidor git service, ejecute el siguiente comando:

$ docker-compose abajo

La servidor git el servicio debe detenerse.

Entonces, así es como configura un servidor HTTP de Git usando Docker. Gracias por leer este artículo.

Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...