使用Docker部署Gitlab

由於公司的代碼服務器已使用Gitosis搭建,但由於用戶和權限管理太麻煩,
現在想在原有服務器上再搭建Gitlab,使用Gitlab官方方法直接安裝,
會導致與Gitosis衝突,使得Gitosis不可用,
因爲要保持兩個服務同時存在,所以就想到利用Docker來搭建Gitlab。

以下以Ubuntu 14.04爲例安裝Docker和Gitlab

安裝Docker

在bash中輸入命令安裝最新的docker

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

下載鏡像

以下腳本會下載gitlab,mysql,redis鏡像

docker pull sameersbn/gitlab:latest
docker pull sameersbn/mysql:latest 
docker pull sameersbn/redis:latest

啓動redis

docker run \
  --name=gitlab_redis \
  -tid \
  sameersbn/redis:latest

啓動mysql

mkdir -p /opt/gitlab/mysql
docker run \
  --name=gitlab_mysql \
  -tid \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' \
  -e 'DB_PASS=password' \
  -v /opt/gitlab/mysql:/var/lib/mysql \
  sameersbn/mysql:latest

啓動gitlab

mkdir -p /opt/gitlab/data /opt/gitlab/log
docker run \
  --name='gitlab' \
  -itd \
  --link gitlab_mysql:mysql \
  --link gitlab_redis:redisio \
  -e 'GITLAB_PORT=80' \
  -e 'GITLAB_SSH_PORT=22' \
  -p 10022:22 -p 10080:80 \
  -v /var/run/docker.sock:/run/docker.sock \
  -v $(which docker):/bin/docker \
  -v /opt/gitlab/data:/home/git/data \
  -v /opt/gitlab/log:/var/log/gitlab \
  sameersbn/gitlab:latest

這一步驟會耗時幾分鐘,因爲這一步會做一些初始化操作,我們可以通過docker logs gitlab來查看安裝過程。
我們指定了10022作爲ssh的訪問端口,10080作爲http的訪問端口,

執行完後,稍微過1-2分鐘後,打開以下地址應該就可以訪問gitlab了
http://localhost:10080
如果是在服務器上搭建,請替換localhost爲服務器地址

加入開機啓動

加入/etc/rc.local

echo 'docker start gitlab_redis' >> /etc/rc.local
echo 'docker start gitlab_mysql' >> /etc/rc.local
echo 'docker start gitlab' >> /etc/rc.local

如何進入docker中的服務器

  • 如果使用的時1.3.0版本以上的Docker,使用以下命令:
docker exec -it gitlab bash
  • 如果是使用更老的版本,使用以下命令:
docker run --rm --volume=/usr/local/bin:/target jpetazzo/nsenter
sudo docker-enter gitlab

備份和恢復gitlab

  • 備份
docker stop gitlab && docker rm gitlab
docker run --name=gitlab -it --rm [OPTIONS] \
  sameersbn/gitlab:latest app:rake gitlab:backup:create
  • 恢復
docker stop gitlab && docker rm gitlab
docker run --name=gitlab -it --rm [OPTIONS] \
  sameersbn/gitlab:latest app:rake gitlab:backup:restore

升級gitlab

  • 重新pull gitlab鏡像
docker pull sameersbn/gitlab:7.11.4
  • 停止和刪除當前的gitlab進程
docker stop gitlab
docker rm gitlab
  • 重新啓動gitlab
docker run \
  --name='gitlab' \
  -itd \
  --link gitlab_mysql:mysql \
  --link gitlab_redis:redisio \
  -e 'GITLAB_PORT=80' \
  -e 'GITLAB_SSH_PORT=22' \
  -p 10022:22 -p 10080:80 \
  -v /var/run/docker.sock:/run/docker.sock \
  -v $(which docker):/bin/docker \
  -v /opt/gitlab/data:/home/git/data \
  -v /opt/gitlab/log:/var/log/gitlab \
  sameersbn/gitlab:latest

本文作者: 陽春麪
本文出處:http://www.aswifter.com/2015/06/14/gitlab-with-docker/
轉載請在開頭註明本文出處。

歡迎關注我的微信公衆號,分享Swift開發,Android 開發和互聯網內容
微信號:APP開發者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章