Gitlab的docker化,找了些資料,後來發現其實人們早就已經做好了,并且在github上就有。最近學到了一個思想,”不重複造輪子“, 我這裡簡單照着文檔做下總結。
GitLab是利用 Ruby on Rails 一個開源的版本管理系統,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務.實作一個自托管的Git項目倉庫,可通過Web界面進行通路公開的或者私人項目。它擁有與Github類似的功能,能夠浏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的通路,它非常易于浏覽送出過的版本并提供一個檔案曆史庫。團隊成員可以利用内置的簡單聊天程式(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實作代碼複用,便于日後有需要的時候進行查找。
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實作虛拟化。容器是完全使用沙箱機制,互相之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和資料中心中運作。最重要的是,他們不依賴于任何語言、架構包括系統。
安裝docker:
<code># wget -qO- https://get.docker.com/ | sh</code>
安裝docker-gitlab:
安裝對應版本的gitlab鏡像:
<code># docker pull sameersbn/gitlab:8.5.5</code>
如果想安裝最新版,使用:
<code># docker pull sameersbn/gitlab:latest</code>
啟動gitlab:
<code># wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml</code>
yml檔案裡存放了相應服務的配置,可根據情況更改;可以使用如下指令生成一個64位是随機字元串,用于GITLAB_SECRETS_DB_KEY_BASE
<code># pwgen -Bsv1 64</code>
<code>qs7KxxMx3wrWpFMH3CxFpbnCNHPfxsxcgRTJcNMgjMJhwLfvmh4HrmwKc4mMcRc7</code>
<code> </code><code>- GITLAB_SECRETS_DB_KEY_BASE=qs7KxxMx3wrWpFMH3CxFpbnCNHPfxsxcgRTJcNMgjMJhwLfvmh4HrmwKc4mMcRc7</code>
另外docker-gitlab預設使用/home/git/data這個目錄用來存放送出上來的代碼,我修改成了自己的路徑:
<code>volumes:</code>
<code> </code><code>- </code><code>/srv/docker/gitlab/gitlab</code><code>:</code><code>/data/code</code>
啟動gitlab,這個過程需要等待一段時間:
<code># docker-compose up</code>
<a href="http://s5.51cto.com/wyfs02/M01/7D/51/wKioL1bmLLfygSbDAAJjaBdgDuY605.png" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M00/7D/51/wKioL1bmLOuwP2wcAAGqLkq-Ouk972.png" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M01/7D/53/wKiom1bmLGayZg90AAJjaBdgDuY925.png" target="_blank"></a>
執行完成之後檢視啟動結果:
<code>root@gitlab:~</code><code># docker ps -a </code>
<code>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES</code>
<code>aefaf4098b00 sameersbn</code><code>/gitlab</code><code>:8.5.5 </code><code>"/sbin/entrypoint.sh "</code> <code>13 hours ago Up 13 hours 443</code><code>/tcp</code><code>, 0.0.0.0:10022->22</code><code>/tcp</code><code>, 0.0.0.0:10080->80</code><code>/tcp</code> <code>root_gitlab_1</code>
<code>a8ed7a4dd879 sameersbn</code><code>/postgresql</code><code>:9.4-14 </code><code>"/sbin/entrypoint.sh"</code> <code>13 hours ago Up 13 hours 5432</code><code>/tcp</code> <code>root_postgresql_1</code>
<code>a9e519dcb183 sameersbn</code><code>/redis</code><code>:latest </code><code>"/sbin/entrypoint.sh"</code> <code>13 hours ago Up 13 hours 6379</code><code>/tcp</code> <code>root_redis_1</code>
如果不用docker-compose的方式,也可以手動 launch:
1、啟動postgresql:
<code>docker run --name gitlab-postgresql -d \</code>
<code> </code><code>--</code><code>env</code> <code>'DB_NAME=gitlabhq_production'</code> <code>\</code>
<code> </code><code>--</code><code>env</code> <code>'DB_USER=gitlab'</code> <code>--</code><code>env</code> <code>'DB_PASS=password'</code> <code>\</code>
<code> </code><code>--volume </code><code>/srv/docker/gitlab/postgresql</code><code>:</code><code>/var/lib/postgresql</code> <code>\</code>
<code> </code><code>sameersbn</code><code>/postgresql</code><code>:9.4-14</code>
2、啟動redis:
<code>docker run --name gitlab-redis -d \</code>
<code> </code><code>--volume </code><code>/srv/docker/gitlab/redis</code><code>:</code><code>/var/lib/redis</code> <code>\</code>
<code> </code><code>sameersbn</code><code>/redis</code><code>:latest</code>
3、啟動gitlab:
<code>docker run --name gitlab -d \</code>
<code> </code><code>--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \</code>
<code> </code><code>--publish 10022:22 --publish 10080:80 \</code>
<code> </code><code>--</code><code>env</code> <code>'GITLAB_PORT=10080'</code> <code>--</code><code>env</code> <code>'GITLAB_SSH_PORT=10022'</code> <code>\</code>
<code> </code><code>--</code><code>env</code> <code>'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string'</code> <code>\</code>
<code> </code><code>--volume </code><code>/srv/docker/gitlab/gitlab</code><code>:</code><code>/home/git/data</code> <code>\</code>
<code> </code><code>sameersbn</code><code>/gitlab</code><code>:8.5.5</code>
上面的指令将使用10080作為Gitlab的Web通路端口,10022将作為ssh push和pull代碼的端口。 在本地可以使用浏覽器打開http://localhost:10080來通路Gitlab,初始登入網站使用root賬戶,使用者名為root,密碼為:5iveL!fe,登入後需要立即修改密碼。
登陸:
http://localhost:10080
<a href="http://s4.51cto.com/wyfs02/M00/7D/59/wKiom1bmfofCQdevAACNVtvq3_w606.png" target="_blank"></a>
本文轉自Jx戰壕 51CTO部落格,原文連結:http://blog.51cto.com/xujpxm/1750968,如需轉載請自行聯系原作者