前言
GitLab 是一套開放原始碼的Git server,對於使用Git 做為版本控制系統,我覺得最大的優點就是它整個介面很貼近 GitHub
像是project wiki (支援markdown 語法), issue, Permissions …等專案會用到的東西它都有,其它更詳盡的功能可以 Google 一下或者到 GitLab 官網一探究竟,這邊就不再多做贅述。
ps. 截至目前為止最新的版本為 7.8.4
基礎環境
Docker 是一套基於Linux kernal 的輕量化虛擬化應用,目前釋出的最新版本是 1.5.0
下面是本文所使用的建置環境
OS : Ubuntu 14.04 LTS
Docker : 1.5.0
安裝映像檔
首先在公共倉庫下載 GitLab 的映像檔,這邊我使用 sameersbn/gitlab 這個映像檔
likol@ubuntu:~$ sudo docker pull sameersbn/gitlab
GitLab 的運行環境還需要 redis 和 SQL 資料庫, 但 sameersbn/gitlab 映像檔裡頭沒有包含這些服務,所以這邊我也用 Docker 將這些服務另外下載下來
SQL資料庫的部分支援 MySQL, MariaDB, PostgreSQL,本文使用 PostgreSQL 做為我們的 SQL 資料庫
likol@ubuntu:~$ sudo docker pull sameersbn/redis
likol@ubuntu:~$ sudo docker pull sameersbn/postgresql
到這邊就把運行 GitLab 所需的映像檔都建置到本機環境中了
設定容器環境
這裡我將啟動步驟存為 shell script 以便之後快速建立新的容器。
Redis
docker run --name=redis \ -d \ sameersbn/redis
PostgreSQL
docker run --name=postgresql \ -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password'\ -v /opt/postgresql/data:/var/lib/postgresql \ -d \ sameersbn/postgresql
GitLab
docker run --name=gitlab \ -v /opt/gitlab/data:/home/git/data \ -d \ -e 'GITLAB_ROOT_PASSWORD=123456' \ -e 'GITLAB_PORT=8080' \ -e 'GITLAB_SSH_PORT=8022' \ -e 'GITLAB_HOST=yourdomain' \ -p 8080:80 -p 8022:22 \ --link redis:redisio \ --link postgresql:postgresql \ sameersbn/gitlab
環境變數說明:
GITLAB_ROOT_PASSWORD 為GitLab 預設的root 使用者指定一個密碼,不指定的預設值為 5iveL!fe
GITLAB_PORT 指定GitLab HTTP 的預設PORT號
GITLAB_SSH_PORT 指定GitLab SSH 的預設PORT號
GITLAB_HOST 指定 GitLab 的域名
更多參數說明請詳閱 sameersbn/gitlab 說明文檔中的 Available Configuration Parameters 章節
Docker run 參數速查
# –name 參數指定該容器之別名, 無指定則自動產生
# -d 參數指定該容器以 daemon 模式啟動 (背景執行)
# -e 參數為容器指定環境變數
# –link 在 Docker 中每個容器並不知道彼此的存在,而 link 參數可以在容器間建立一個安全的通道讓兩個容器可以通訊
example : [已開啟的 container name] : [在此 container 中的 alias]
# -p 參數可為Container 的port 映射到本機實體port
example : [本機 port] : [container port]
# -v 參數這邊用為在容器掛載一個資料卷到我們的實體系統中的某個路徑,以便我們備份資料
[主機實體路徑] : [container中的路徑]
啟動容器
在運行 sameersbn/gitlab 這個容器之前我們必須先將 redis 和 postgresql 先啟動起來才有辦法和之後的 gitlab container 做 link
也別忘了將我們剛剛所寫好的 shell script 設定可執行屬性
likol@ubuntu:~$ chmod 744 create-container-gitlab.sh likol@ubuntu:~$ chmod 744 create-container-postgresql.sh likol@ubuntu:~$ chmod 744 create-container-redis.sh
之後便可以用shell script快速創建容器
likol@ubuntu:~$ sudo ./create-container-postgresql.sh likol@ubuntu:~$ sudo ./create-container-redis.sh likol@ubuntu:~$ sudo ./create-container-gitlab.sh
啟動完成之後就可以直接使用瀏覽器拜訪我們的GitLab service
然後使用管理員帳號 root 和我們所指定的密碼 123456 就可以登入體驗囉!