Docker

Configurar um servidor HTTP Git no Docker

Configurar um servidor HTTP Git no Docker
O servidor Git HTTP é muito útil para pessoas que desejam trabalhar e colaborar em projetos de forma privada. Neste artigo, vou mostrar como configurar um servidor Git acessível por HTTP usando 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 ainda não o tiver instalado. Portanto, certifique-se de verificar LinuxHint.com caso você esteja tendo problemas para instalar o Docker.

Instalando o Docker Compose:

Você pode baixar o arquivo binário do Docker Compose facilmente com o seguinte 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: ondulação pode não estar instalado na 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 arquivo binário é baixado, execute o seguinte comando:

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

Agora, verifique se docker-compose comando está funcionando da seguinte maneira:

versão $ docker-compose

Deve imprimir as informações da versão conforme mostrado na imagem abaixo.

Configurando o Docker Compose para o projeto:

Agora, crie um diretório de projeto ~ / docker / gitserver (digamos) e um repos / 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 se parecer. Aqui, eu tenho 2 arquivos, idiota.conf e git-create-repo.sh no etc / diretório. Um vazio repos / diretório para manter todos os repositórios Git. UMA gitserver.Dockerfile para construir um contêiner Docker de servidor HTTP Git personalizado e um docker-compose.yaml Arquivo.

O conteúdo do gitserver.Dockerfile:

DO ubuntu: 18.04
RUN atualização apt 2> / dev / null
RUN apt install -y git apache2 apache2-utils 2> / dev / null
RUN a2enmod env cgi alias reescrever
EXECUTE mkdir / var / www / git
RUN chown -Rfv www-data: www-data / var / www / git
CÓPIA DE ./ etc / git.conf / etc / apache2 / sites-available / git.conf
CÓPIA DE ./ etc / git-create-repo.sh / usr / bin / mkrepo
EXECUTAR chmod + x / usr / bin / mkrepo
RUN a2dissite 000-default.conf
RUN a2ensite git.conf
RUN git config --system http.receivepack true
RUN 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.pid
CMD / usr / sbin / apache2ctl -D ANTES
EXPOR 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 + SymLinksIfOwnerMatch
AllowOverride Nenhum
Exigir todos concedidos

 
DocumentRoot / var / www / html
 

Opções de índices FollowSymLinks MultiViews
AllowOverride Nenhum
Exigir todos concedidos

ErrorLog $ APACHE_LOG_DIR / erro.registro
Aviso LogLevel
CustomLog $ APACHE_LOG_DIR / acesso.log combinado

O conteúdo do etc / git-create-repo.sh Script Shell:

#!/ bin / bash
 
GIT_DIR = "/ var / www / git"
REPO_NAME = $ 1
 
mkdir -p "$ GIT_DIR / $ REPO_NAME.idiota "
cd "$ GIT_DIR / $ REPO_NAME.idiota "
 
git init --bare &> / dev / null
toque em git-daemon-export-ok
cp hooks / post-update.exemplo de ganchos / pós-atualização
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.idiota "
echo "Repositório Git '$ REPO_NAME' criado em $ GIT_DIR / $ REPO_NAME.idiota "

Finalmente, o conteúdo do docker-compose.yaml Arquivo:

versão: "3.7 "
Serviços:
git-server:
construir:
dockerfile: gitserver.Dockerfile
contexto: .
reiniciar: sempre
portas:
- "8080: 80"
volumes:
- ./ repos: / var / www / git

Construindo imagem Docker Git HTTP Server:

Agora, para construir a imagem do docker do Git HTTP Server, execute o seguinte comando:

compilação $ docker-compose

Pode demorar um pouco para construir uma imagem Docker personalizada.

Neste ponto, a imagem Docker deve ser construída.

Sempre que você fizer qualquer alteração em qualquer um dos gitserver.Dockerfile, etc / git.conf, etc / git-create-repo.sh arquivo, você deve reconstruir a imagem Docker usando compilação docker-compose comando.

Iniciando Git HTTP Server:

Agora, para começar o git-server serviço, execute o seguinte comando:

$ docker-compose 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-compose ps

Como você pode ver, para o git-server serviço, a porta do host Docker 8080 é mapeado para a porta TCP do contêiner 80.

Criando Novo Repositório Git no Servidor:

Para criar um novo repositório Git teste (digamos) no contêiner do servidor HTTP Git, execute o seguinte comando:

$ docker-compose exec git-server mkrepo test

Um novo repositório Git teste deve ser criado.

Encontrar o endereço IP do Docker Host:

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

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

$ ip

No meu caso, o endereço IP do meu host Docker 192.168.20.160. Será diferente para você. Portanto, certifique-se de substituí-lo pelo 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 /.idiota

Aqui,

é o endereço IP do seu Docker Host.

é 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.idiota

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

$ git clone http: // 192.168.20.160: 8080 / teste.idiota

Como você pode ver, o repositório foi clonado com sucesso. Mas está vazio no momento.

Um novo diretório teste/ deve ser criado.

$ ls

Navegue até o teste/ diretório.

$ cd test /

Agora, faça algumas alterações e confirme.

$ echo "bem-vindo ao git-server"> mensagem.TXT
$ git add -A
$ git commit -m 'commit inicial'
$ git log --oneline

Agora, envie as alterações para o servidor da seguinte maneira:

$ git push origin master

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

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

$ git clone http: // 192.168.20.160: 8080 / teste.idiota

Navegue até o teste/ diretório.

$ cd test /

E encontre as mudanças lá.

Parando o servidor HTTP Git:

Para parar o git-server serviço, execute o seguinte comando:

$ docker-compose down

O git-server serviço deve ser interrompido.

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

Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...
0 A.D. Tutorial
Dos muitos jogos de estratégia que existem, 0 A.D. consegue se destacar como um título abrangente e um jogo muito profundo e tático, apesar de ser de ...
Tutorial Unity3D
Introdução ao Unity 3D Unity 3D é um poderoso motor de desenvolvimento de jogos. É uma plataforma cruzada que permite criar jogos para celular, web, d...