Configure um servidor HTTP Git no Docker

Configure um servidor HTTP Git no Docker
O servidor Git HTTP é muito útil para pessoas que desejam trabalhar e colaborar em projetos em particular. Neste artigo, vou mostrar como configurar um servidor Git acessível HTTP usando o Docker Compose. Então vamos começar.

Requisitos:

Para seguir este artigo, você deve ter o Docker instalado no seu computador. Linuxhint tem muitos artigos que você pode seguir para instalar o docker na distribuição Linux desejada, se você ainda não o instalou. Então, verifique o Linuxhint.com o caso de você estar tendo problemas para instalar o docker.

Instalando o docker compor:

Você pode fazer o download do docker compor o arquivo binário com muita facilidade com o seguinte comando:

$ sudo curl -l "https: // github.com/docker/compor/liberações/download/1.24.1//
Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/Docker-Comppose

OBSERVAÇÃO: ondulação não pode ser instalado em sua distribuição Linux. Se for esse o caso, você pode instalar o CURL com o seguinte comando:

Ubuntu/Debian/Linux Mint:

$ sudo apt install curl -y

CENTOS/RHEL/FEDORA:

$ sudo dnf install curl -y

Uma vez Docker-Compose O arquivo binário é baixado, execute o seguinte comando:

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

Agora, verifique se Docker-Compose O comando está funcionando da seguinte maneira:

Versão $ Docker-Compose

Ele deve imprimir as informações da versão, conforme mostrado na captura de tela abaixo.

Configurando o Docker compor para o projeto:

Agora, crie um diretório de projeto ~/Docker/GitServer (digamos) e um reposs/ e etc/ Diretório dentro do diretório do projeto para manter os repositórios Git e alguns arquivos de configuração.

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

Agora, navegue até o diretório do projeto ~/Docker/GitServer do seguinte modo:

$ CD ~/Docker/GitServer

É assim que a árvore do projeto deve ser. Aqui, eu tenho 2 arquivos, git.conf e Git-Create-Repo.sh no etc/ diretório. Um vazio reposs/ Diretório para manter todos os repositórios Git. A GitServer.Dockerfile para a construção de um contêiner Git HTTP Server Docker personalizado e um Docker-Compose.Yaml arquivo.

O conteúdo do GitServer.Dockerfile:

De Ubuntu: 18.04
Execute APT Atualize 2>/dev/null
Execute o apt install -y git apache2 apache2 -utils 2>/dev/null
Executar a reescrita A2EnMod Env CGI
Execute mkdir/var/www/git
Run Chown -RFV www-data: www-data/var/www/git
CÓPIA DE ./etc/git.Conf/etc/apache2/sites-disponível/git.conf
CÓPIA DE ./etc/git-create-repo.sh/usr/bin/mkrepo
Execute chmod +x/usr/bin/mkrepo
Execute a2dissite 000-Default.conf
Execute o Git A2ensite.conf
Run Git Config -System HTTP.RECEPTPACK TRUE
Run Git Config -System HTTP.UPLOPLEPACK 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.PID
Cmd/usr/sbin/apache2ctl -d em primeiro plano
Exponha 80/TCP

O conteúdo de etc/git.conf Arquivo de configuração do 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

Opções +Execcgi -Multiviews +Symlinksifowowsatch
Allowoverride nenhum
Exigir tudo concedido

Documentroot/var/www/html

Índices de opções seguem os links multiviews
Allowoverride nenhum
Exigir tudo concedido

ErrorLog $ apache_log_dir/erro.registro
Loglevel Warn
CustomLog $ apache_log_dir/acesso.log combinado

O conteúdo do etc/git-create-repo.sh 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 no git-daemon-export-ok
Ganchos CP/pós-atualização.ganchos de amostra/pós-atualização
Git Update-Server-Info
CHOWN -RF WWW-DATA: www-data "$ git_dir/$ repo_name.git "
Echo "Git Repository '$ repo_name' criado em $ git_dir/$ repo_name.git "

Finalmente, o conteúdo do Docker-Compose.Yaml arquivo:

Versão: "3.7 "
Serviços:
Git-Server:
construir:
Dockerfile: GitServer.Dockerfile
contexto: .
Reinicie: sempre
Portas:
- "8080: 80"
volumes:
- ./repos:/var/www/git

Construindo Git HTTP Server Docker Imagem:

Agora, para construir a imagem do Docker do servidor HTTP Git, execute o seguinte comando:

$ Docker-Compõe Build

Pode demorar um pouco para construir uma imagem personalizada do Docker.

Neste ponto, a imagem do docker deve ser construída.

Sempre que você faz alterações em qualquer um dos GitServer.Dockerfile, etc/git.conf, etc/git-create-repo.sh arquivo, você deve reconstruir a imagem do docker usando Build do Docker-Compose comando.

Iniciando o servidor http git:

Agora, para começar o Git-Server Serviço, execute o seguinte comando:

$ Docker -Compõe Up -d

O Git-Server O serviço deve começar em segundo plano.

Para ver como as portas são mapeadas, execute o seguinte comando:

$ Docker-Compor PS

Como você pode ver, para o Git-Server Serviço, a porta host do docker 8080 é mapeado para a porta TCP do contêiner 80.

Criando um novo repositório Git no servidor:

Para criar um novo repositório Git teste (Digamos) No contêiner Git HTTP Server, execute o seguinte comando:

$ Docker-Compompose Exec Git-Server Mkrepo Teste

Um novo repositório Git teste deve ser criado.

Encontrando o endereço IP do host do Docker:

Se você deseja acessar o servidor Git HTTP de outros computadores em sua rede, você deve saber o endereço IP do seu host do Docker.

Para encontrar o endereço IP do seu host do Docker, execute o seguinte comando:

$ ip

No meu caso, o endereço IP do meu host do Docker 192.168.20.160. Vai ser diferente para você. Então, certifique -se de substituí -lo por seu a partir de agora.

Acessando repositórios Git do servidor:

Você pode acessar os repositórios Git no servidor usando o URL http: //: 8080/.git

Aqui,

é o endereço IP do seu host do Docker.

é o nome do repositório Git no servidor Git HTTP.

Então, no meu caso, para o teste Repositório, o URL deve ser http: // 192.168.20.160: 8080/teste.git

Agora, você pode clonar o repositório Git de teste do servidor da seguinte forma:

Clone $ Git http: // 192.168.20.160: 8080/teste.git

Como você pode ver, o repositório é clonado com sucesso. Mas atualmente está vazio.

Um novo diretório teste/ deve ser criado.

$ ls

Navegue até o teste/ diretório.

$ cd teste/

Agora, faça algumas mudanças e cometê -lo.

$ Echo "Welcome to Git-Server"> Mensagem.TXT
$ git add -a
$ git commit -m 'Commits inicial'
$ git log --oneeline

Agora, empurre as alterações no servidor da seguinte forma:

$ Git Push Origin Master

Como você pode ver, os compromissos são enviados para o servidor HTTP Git com sucesso.

Agora, outra pessoa também pode clonar o repositório do Git de teste.

Clone $ Git http: // 192.168.20.160: 8080/teste.git

Navegue até o teste/ diretório.

$ cd teste/

E encontre as mudanças lá.

Parando o servidor HTTP Git:

Para parar o Git-Server Serviço, execute o seguinte comando:

$ docker-compor para baixo

O Git-Server O serviço deve ser parado.

Então, é assim que você configura um servidor HTTP Git usando o Docker. Obrigado por ler este artigo.