使用Docker來搭建gitlab(備份)
所有的團隊都面臨同樣一個問題,程式碼庫的版本管理。
gitlab可以說是開源的github,可以自行部署在任何地方。
那對於團隊來講,我要怎麼去部署、升級、備份、遷移才是最關鍵的地方。這個時候有了Docker這麼牛逼的東西出現了。
最最最根本的就是它不會影響你現有的環境
這裡不推薦使用官網的安裝方式,另外使用vagrant的同學們可以看過來了,docker才是王道。
這裡廢話一點,講點docker安裝的東西,瞭解的可以跳過。
安裝docker
這裡以centos6.5為例,其他詳見官網
wget
http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
sudo yum update -y
sudo yum install -y docker-io
usermod -a -G docker your_user_name
Daocloud加速器
這個時候你就要用最最牛13的Daocloud加速器了,國內網路的福音啊。
這個時候只要根據官網提示進行使用即可,體驗飛一般的速度,不一樣的酸爽。這裡插入一段硬廣,DaoCloud不僅僅提供高速下載的加速器,他們是國內最早的一站式Docker應用打包釋出平臺,提供了持續整合、映象構建、釋出管理和容器託管的全套服務。
準備工作
有興趣的可以訪問docker映象首頁來看目前最棒的gitlab docker映象的官方使用指南。
docker
pull sameersbn/gitlab:7.11.2
docker pull sameersbn/postgresql:9.4
docker pull sameersbn/redis:latest
上述的版本大家可以去上面的地址查詢最新的版本。
建立資料資料夾, 位置隨意,大家記下即可
mkdir
/home/username/opt/gitlab/data
mkdir /home/username/opt/postgresql/data
啟動postgresql
docker
run --name=postgresql -d \
-e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
-v /home/username/opt/postgresql/data:/var/lib/postgresql \
sameersbn/postgresql:9.4
上述的位置與資料資料夾保持一致。
啟動redis
docker
run --name=redis -d sameersbn/redis:latest
啟動gitlab
docker
run --name='gitlab' -d \
--link redis:redisio \
-v /home/username/opt/gitlab/data:/home/git/data \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
--link postgresql:postgresql \
-e '[email protected]' \
-e 'GITLAB_BACKUPS=daily' \
-e 'GITLAB_HOST=gitlab.daocloud.io' \
-e 'GITLAB_SIGNUP=true' \
-e 'GITLAB_GRAVATAR_ENABLED=false' \
sameersbn/gitlab:7.11.2
上述的位置與資料資料夾保持一致,更多引數請見這裡。
上述設定會每天自動進行備份,建議開啟。
手動備份
docker stop gitlab
docker rm gitlab
docker
run --name='gitlab' -it --rm \
你的設定
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:create
這樣就會在/home/username/opt/gitlab/data/backups
下面建立備份,備份的所屬者請看下ls
-la /home/username/opt/gitlab/data/backups
下面的檔案,遷移的時候有用,另外遷移的話,也只需要保留這個備份出來的檔案即可。
恢復備份
確保你的gitlab的版本跟備份的版本一致。
docker
run --name='gitlab' -it --rm \
你的設定
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:restore
這樣就能確保遷移之後的版本跟遷移之前的版本一樣了。
遷移
這個時候你只要在目標機器上做完準備工作之後,啟動一次gitlab,然後把之前備份的檔案放到/home/username/opt/gitlab/data/backups
下面,確保備份檔案的許可權問題之後恢復備份即可
升級
先備份,防止升級後出現問題,然後docker pull新的版本之後,直接run就可以了。
最後講一下,如何從你的庫來源完全映象到gitlab吧
git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
git remote set-url --push origin https://github.com/exampleuser/mirrored
git
fetch -p origin
git push --mirror
這個能保證你的來源在被提交的時候,gitlab能保持完全一致。最後只要指定時間關閉來源的提交之後久就可以無縫切換到gitlab了。