製做容器化GITWEB管理GIT倉庫

最近在RK3399上部署了GIT服務器,原本想着部署一個GITLAB的,可是太大了,後來想一想部署一個簡單的GITOLITE也知足小團隊使用。
因而使用GITOLITE+GITWEB的方式。html

常規安裝GITWEBgit

在Ubuntu下默認安裝gitweb 它會把apache2也安裝好。web

  • 修改/etc/gitweb.conf, 修改projectroot的參數

$projectroot = "/home/git/repositories";docker

而後直接重啓一下apacheapache

> sudo apt install gitweb
> sudo a2enmod cgi
> sudo systemctl restart apache2

經過瀏覽器打開:
http://localhot/gitwebubuntu

問題
若是倉庫的權限存在問題,好比使用/home/git gitolite或gitosis維護的倉庫,權限默認是700,這個時候,其餘用戶沒有辦法查看。爲了解決這個問題。有如下方法:瀏覽器

  • 將現有的目錄權限修改成0755, 最好使用find命令查找到目錄修改

sudo su git
chmod -R 755 /home/git/repositories安全

  • 修改GIT服務建立目錄的權限。

sudo su git
cd ~
cat .gitolite.rc服務器

修改方法以下:ide


進階

  • 如何將URL中的gitweb去掉!!!
  • 若是能作成容器版本,那將方便好多,能夠同時跑多個實例!!!
  • 安全性問題,最好須要登陸才能訪問

第一個問題:

sudo vi sites-available/000-default.conf
將DocumentRoot 改成 /usr/share/gitweb
sudo systemctl restart apache2

從新打開便可。

第二問題

直接上Dockerfile

FROM ubuntu
MAINTAINER einsn
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y gitweb apache2
RUN a2enmod cgi
RUN sed -i 's#/var/www/html#/usr/share/gitweb#g' /etc/apache2/sites-available/000-default.conf
COPY apache-foreground /usr/sbin/
RUN chmod a+x /usr/sbin/apache-foreground
EXPOSE 80
CMD ["apache-foreground"]

裏面用一個腳本文件apache-foreground:

#!/bin/sh

set -e

# Apache gets grumpy about PID files pre-existing
rm -f /var/run/apache2/apache2.pid

exec apache2ctl -DFOREGROUND

執行build

docker build -t gitweb .

默認容器內的監聽的GIT目錄爲 /var/lib/git 因此,使用-v選項能夠指定本地監聽目錄。
看看可否正常運行

docker run -d -p8100:80 -v /home/einsn/work:/var/lib/git --name gitweb gitweb

安全,是比較重要
這樣一來,安全問題又出現了,須要增長一個安全驗證,準備在這個容器基礎上,建立了新的容器

建立一個文件 digest.conf

<Location "/">
    AuthType Digest
    AuthName "Hello,gitweb"
    AuthDigestDomain "/"
    AuthDigestProvider file
    AuthUserFile "/var/www/passwd.digest"
    require valid-user
</Location>

建立一個密碼文件,記住輸入的密碼。

htdigest -c passwd.digest "Hello,gitweb" einsn

再建立一個Dockerfile

FROM einsn/gitweb_arm64
MAINTAINER einsn
RUN cd /etc/apache2/mods-enabled && ln -s ../mods-available/auth_digest.load
RUN sed -i 's/#ServerName/ServerName/g' /etc/apache2/sites-available/000-default.conf
COPY digest.conf /etc/apache2/conf-enabled/
COPY passwd.digest /var/www/
EXPOSE 80
CMD ["apache-foreground"]

建立

docker build -t gitweb_digest .

個人運行腳本:(加上--restart保證一直可靠運行)

docker run -d -p8100:80 -v /home/git/repositories:/var/lib/git --restart always --name gitweb_all einsn/gitweb_arm64

經過docker化GITWEB,能夠輕易的部署在不一樣的設備上。

相關文章
相關標籤/搜索