由於公司的代碼服務器已使用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開發者