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 -yCentOS / RHEL / Fedora:
$ sudo dnf install curl -yUna 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ónDeberí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.04EJECUTAR 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 / bashGIT_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 psComo 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:
$ ipEn 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: //
Aquí,
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.