docker-gitlab部署

docker用來隔離應用仍是很方便的,一來自己的操做較爲簡單,二來資源佔用也比虛擬機要小得多,三來也較爲安全,由於像數據庫這樣的應用不會再全局暴露端口,同時應用間的通訊經過加密和端口轉發,更加安全。html

Gitlab是目前比較流行的開源類Github代碼管理平臺。Gitlab使用Rails開發,使用PostgreSQL或MySQL數據庫,Redis作緩存。通常本身搭建私有代碼倉庫,Gitlab一般是首選。這裏簡單介紹一下dockerized Gitlab。git

Gitlab的docker鏡像早已有人作好了,而且維護至關不錯。你們能夠前往其GitHub倉庫瞭解該鏡像的狀況。官方repo的readme中已經有詳細的安裝配置方案,這裏我簡單的梳理一下部署流程。github

安裝Docker

這裏以Ubuntu 14.04發行版爲例,在bash中輸入一下命令安裝最新的docker:redis

sudo apt-get purge docker.io
curl -s https://get.docker.io/ubuntu/ | sudo sh
sudo apt-get update
sudo apt-get install lxc-docker

注意: 若是你使用了阿里雲最新推出的Docker鏡像,那麼能夠省略本節的步驟。由於阿里雲的這個鏡像已經自帶了1.2版的docker,版本比較新,能夠直接使用。sql

安裝docker-gitlab

使用以下命令可使Docker下載對應版本的Gitlab鏡像:docker

docker pull sameersbn/gitlab:7.5.3

上面的命令下載7.5.3版的Gitlab,若是想下載最新版本,能夠輸入如下命令:數據庫

docker pull sameersbn/gitlab:latest

待下載完成後就算完成安裝了。
也能夠Clone剛纔的提到的倉庫,而後在本機上build鏡像:ubuntu

git clone https://github.com/sameersbn/docker-gitlab.git
cd docker-gitlab
docker build --tag="$USER/gitlab" .

注意上面最後一行命令結尾有一個"."符號,不要掉了。瀏覽器

安裝PostgreSQL

Gitlab推薦使用PostgreSQL做爲數據庫。既然使用了docker,那麼咱們爲什麼不考慮把全部的組件都用docker包裝起來?咱們同樣能夠下載PostgreSQL的鏡像完成安裝,這種安裝更加便捷。緩存

首先輸入如下命令下載PostgreSQL鏡像:

docker pull sameersbn/postgresql:latest

而後咱們要爲數據庫默認的表空間創建目錄以存放數據:

mkdir -p /opt/postgresql/data

這裏/opt/postgresql/data部分能夠替換成你本身但願創建的地址。
若是是使用SELinux,那麼還須要改變一下這個目錄的安全設置:

sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data

若是沒有使用SELinux,能夠跳過上面一條命令。

最後使用如下命令行啓動數據庫:

docker run --name=postgresql -d \
  -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
  -v /opt/postgresql/data:/var/lib/postgresql \
  sameersbn/postgresql:latest

這裏,"-e"選項後面的內容請不要隨意變動,這裏的配置都是Gitlab默認的數據庫配置,若是沒有在後面Gitlab鏡像啓動的設置裏面作相應的修改的話,這裏的修改會讓程序沒法正常運行。

安裝Redis

一樣,咱們可使用docker來安裝Redis:

docker pull sameersbn/redis:latest

而後啓動它:

docker run --name=redis -d sameersbn/redis:latest

啓動gitlab

在最終啓動Gitlab以前,咱們還須要爲Gitlab建立一個目錄用來存放提交上來的代碼,docker-gitlab內部使用/home/git/data這個目錄存放代碼,咱們在容器外部建立一個目錄而後在啓動的時候掛載到這個路徑便可:

mkdir -p /opt/gitlab/data
mkdir -p /opt/gitlab/backups

一樣,若是使用SELinux,須要修改目錄的安全配置:

sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups

在完成上面全部的步驟之後,咱們能夠用如下命令啓動Gitlab:

docker run --name='gitlab' -d \
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \ 
  -e 'GITLAB_BACKUPS=monthly' \
  -p 10022:22 -p 10080:80 \
  -v /opt/gitlab/data:/home/gitl/data \
  -v /opt/gitlab/backups:/home/git/data/backups
  sameersbn/gitlab:7.5.3

上面的命令將使用10080做爲Gitlab的Web訪問端口,10022將做爲ssh push和pull代碼的端口。
在本地可使用瀏覽器打開http://localhost:10080來訪問Gitlab,初始登陸網站使用root帳戶,用戶名爲root,密碼爲:5iveL!fe,登陸後須要當即修改密碼。

這裏解釋一下各參數:

-d: 後臺運行
-e:配置Gitlab運行的環境變量,這個參數很重要,具體有哪些環境變量,後面列舉
-p: 端口轉發規則
-v: 共享目錄掛載,即docker容器內外數據共享

Gitlab的環境變量配置比較多,這裏列舉一下比較重要的Gitlab的環境變量:

  • GITLAB_HOST: 這個是Gitlab服務器的hostname,你須要將此設定爲網站的域名或者ip(不帶端口號),默認值爲localhost,這個值會被Gitlab用來生成repo的連接,因此必需要設置。不然,在建立的repo中,會發現全部的repo連接都是以localhost爲hostname。
  • GITLAB_PORT Gitlab網站的訪問端口,這裏的設置要結合端口轉發一塊兒設置,不然會致使網站沒法訪問,默認值爲80
  • GITLAB_SSH_PORT Gitlab的SSH代碼提交方式使用的SSH端口,這裏的設置要結合端口轉發一塊兒設置,不然會致使代碼沒法提交,默認值爲22。若是是在VPS上部署,這個值請使用別的端口,好比上面提到的10022端口,不然會與VPS本來的SSH端口產生衝突,形成SSH沒法登陸VPS
  • GITLAB_BACKUPS Gitlab的自動備份配置,有disable, daily, weekly, monthly四個可選值,默認爲disable。建議打開自動備份
  • GITLAB_BACKUP_DIR Gitlab自動備份目錄,默認值爲/home/git/data/backups

其餘的參數請參考repo中的README.md.

相關文章
相關標籤/搜索