mac 上搭建gitlabel_在Mac OS X中用Docker部署GitLab
以前采用gitosis在Mac OS上架設Git服務器,用于集中管理課題組中的所有Git倉庫。Gitosis 是一套用來管理?authorized_keys文件和實現簡單連接限制的腳本,用來添加用戶和設定權限。它并非通過網頁程序,而只是管理一個特殊的 Git 倉庫。管理員只需在這個特殊倉庫內做好相應的設定,然后推送到服務器上,Gitosis 就會隨之改變運行策略。
Gitosis沒有web頁面,使用較為復雜。Gitlab是一個用Ruby on Rails開發的開源項目管理程序,可以通過WEB界面進行訪問公開的或者私人項目。它和Github有類似的功能,能夠瀏覽源代碼,管理缺陷和注釋,但github無法免費建立私有倉庫。
Gitlab在linux下很容易安裝,既可以編譯源代碼安裝,也可以通過rpm包或deb包安裝,但目前還沒有可供Mac OS X安裝的軟件包,只能編譯源代碼安裝,既復雜又容易出錯。因此我們采用Docker來部署Gitlab。
Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。Docker Hub (https://hub.docker.com) 上提供了很多的容器鏡像,可以直接安裝使用。
基于Docker在Mac OS X系統中的部署和設置GitLab的具體過程如下:
2. 下載GitLab鏡像
docker pull gitlab/gitlab-ce
3. 運行GitLab實例
sudo docker run -d \
--name gitlab \
--restart always \
--publish 30001:22 --publish 30000:80 --publish 30002:443 \
--volume $HOME/gitlab/data:/var/opt/gitlab \
--volume $HOME/gitlab/logs:/var/log/gitlab \
--volume $HOME/gitlab/config:/etc/gitlab \
gitlab/gitlab-ce
其中volume選項將gitlab的目錄掛載為用戶當地目錄,以免容器在停止或被刪除的時候丟失數據。publish選項將宿主機器的30000、30001和30002映射為容器的80(http)、22(ssh)和443(https)端口。
4.配置GitLab實例
GitLab的配置存儲在/etc/gitlab/gitlab.rb文件中。
利用命令“sudo docker exec -it gitlab /bin/bash”可以在gitlab容器中進入bash,也可以用命令“sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb”直接執行vi編輯GitLab配置文件。由于在運行GitLab實例時,已經用volume選項將gitlab的目錄掛載為用戶當地目錄,因此gitlab.rb文件實際位于$HOME/gitlab/config目錄下。
修改gitlab.rb文件后,在容器中執行命令gitlab-ctl reconfigure重新配置gitlab。
4.1 配置GitLab服務器的訪問地址
4.1.1?配置http協議所使用的訪問地址
將external_url修改為GitLab服務器的訪問地址:
由于定義的url中有端口號,需要將nginx監聽的端口號改回80,否則nginx將監聽容器的30000端口,造成GitLab無法使用:
nginx['listen_port'] = 80
4.1.2 配置ssh協議所使用的訪問地址和端口
gitlab_rails['gitlab_ssh_host'] = ‘data.comdyn.cn'
gitlab_rails['gitlab_shell_ssh_port'] =30001
4.2 配置郵箱
為了采用SMTP服務器而不是缺省的Sendmail發送郵件,需要修改gitlab.rb中的內容,
下面以網易163郵箱為例配置郵箱:
gitlab_rails['gitlab_email_from'] = "This email address is being protected from spambots. You need JavaScript enabled to view it.”
gitlab_rails['gitlab_email_reply_to'] = ‘This email address is being protected from spambots. You need JavaScript enabled to view it.'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "This email address is being protected from spambots. You need JavaScript enabled to view it."
gitlab_rails['smtp_password'] = "xxxxpassword"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] =true
gitlab_rails['smtp_openssl_verify_mode'] = "peer"
最后,用命令docker restart gitlab重啟GitLab,或者在容器中執行命令gitlab-ctl reconfigure重新配置gitlab。
5. 導入現有的git倉庫
將現有的git倉庫(如test)導入gitlab需要三步:
5.1 將已有的所有git倉庫的裸庫(如test.git)都拷貝到gitlab目錄中。
前面在運行gitlab實例時,利用volume選項已經將gitlab的數據目錄指定為$HOME/gitlab/data/,因此git倉庫將存放在目錄$HOME/gitlab/data/git-data/repositories/下。
gitlab允許創建組,將多個倉庫納入到一個組中,每個組在repositories下面對應于一個與組名稱相同的子目錄。將所有裸庫拷貝到與其組所對應的子目錄中。例如,如果要要將test倉庫導入到sub組中的話,則應執行:
sudo cp -r test.gig?$HOME/gitlab/data/git-data/repositories/sub/
5.2 利用sudo chown命令,將test.git的擁有者的用戶名和組名改為和repositories目錄的擁有者相同,以保證gitlab可以訪問該倉庫。
5.3 導入倉庫
在gitlab容器中執行gitlab-rake命令:
sudo docker exec -it gitlab gitlab-rake gitlab:import:repos['$HOME/gitlab/data/git-data/repositories’]
導入repositories下的所有倉庫,并自動創建組。如果某倉庫在gitlab中已存在,則會跳過該倉庫。
6. 升級gitlab
由于gitlab的設置、日志和數據都已經保存在用戶目錄中,升級gitlab時只需停止和刪除當前的gitlab實例,再執行第2步和第3步,重新下載gitlab鏡像并啟動gitlab實例即可。
總結
以上是生活随笔為你收集整理的mac 上搭建gitlabel_在Mac OS X中用Docker部署GitLab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双休日做什么副业赚钱 分享一些能用的到的
- 下一篇: 钱站免密授权怎么办