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 -yCentOS / RHEL / Fedora:
$ sudo dnf install curl -yUma 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-composeDeve 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.04RUN 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 / bashGIT_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 psComo 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:
$ ipNo 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: //
Aqui,
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.